提交 bd077a5413e53f78407358a3124879891bc2d38f

作者 fanwh
1 个父辈 0bb007a8

no message

要显示太多修改。

为保证性能只显示 41 of 41+ 个文件。

... ... @@ -24,6 +24,7 @@
24 24 "service:settlemgmIterative": "better-npm-run service-settlemgmIterative",
25 25 "service:hroSettlemgm": "better-npm-run service-hroSettlemgm",
26 26 "service:hroTemp": "better-npm-run service-hroTemp",
  27 + "service:hroEngma": "better-npm-run service-hroEngma",
27 28 "service:developTest": "better-npm-run service-developTest",
28 29 "dev-start": "node-debug ./app.js",
29 30 "prepublish": "npm prune",
... ... @@ -93,7 +94,7 @@
93 94 }
94 95 },
95 96 "service": {
96   - "command": "babel-node server/app.js",
  97 + "command": "pm2 start server/app.js -i max --name web-hro",
97 98 "env": {
98 99 "NODE_ENV": "production",
99 100 "DEBUG": "app:*"
... ... @@ -154,6 +155,13 @@
154 155 "NODE_ENV": "test",
155 156 "DEBUG": "app:*"
156 157 }
  158 + },
  159 + "service-hroEngma": {
  160 + "command": "pm2 start server/app.js -i 2 --name web-hro-engma",
  161 + "env": {
  162 + "NODE_ENV": "hroEngma",
  163 + "DEBUG": "app:*"
  164 + }
157 165 }
158 166 },
159 167 "keywords": [
... ... @@ -369,4 +377,4 @@
369 377 },
370 378 "author": "fan",
371 379 "license": "ISC"
372   -}
\ No newline at end of file
  380 +}
... ...
... ... @@ -165,12 +165,14 @@ exports = module.exports = function () {
165 165 port: 35729
166 166 },
167 167 restful: {
168   - url: 'http://47.110.158.110:20000/',
169   - ossUrl: 'http://47.110.158.110:20000/',
170   - version: '/v1',
171   - host: '47.110.158.110',
172   - port: 20000
  168 + url: 'http://154.8.229.55:20000/',
  169 + // url:'http://192.144.144.220:20000/',
  170 + //url:'http://127.0.0.1:20000/',
  171 + // url:'http://140.143.196.80:20000/',
  172 + ossUrl: 'http://192.168.2.72:20000/',
  173 + version: '/v1'
173 174 },
  175 + prefix: '/',
174 176 localStrategy: {
175 177 usernameField: 'username',
176 178 passwordField: 'password',
... ... @@ -251,10 +253,10 @@ exports = module.exports = function () {
251 253 enabled: false,
252 254 },
253 255 restful: {
254   - url: 'http://47.110.158.110:20000/',
255   - ossUrl: 'http://47.110.158.110:20000/',
  256 + url: 'http://192.168.2.72:20000/',
  257 + ossUrl: 'http://192.168.2.72:20000/',
256 258 version: '/v1',
257   - host: '47.110.158.110',
  259 + host: '192.168.2.72',
258 260 port: 20000
259 261 },
260 262 server: {
... ... @@ -278,8 +280,8 @@ exports = module.exports = function () {
278 280 redis: {
279 281 prefix: 'igloo_production',
280 282 host: '127.0.0.1',
281   - port: 6379,
282   - pass: '',
  283 + port: 38888,
  284 + pass: 'Q*Kr4?#Rg!'
283 285 },
284 286 csrf: {
285 287 enabled: true,
... ... @@ -300,10 +302,10 @@ exports = module.exports = function () {
300 302 'console': true,
301 303 requests: true,
302 304 mongo: false,
303   - // file: {
304   - // filename: '/opt/work/hro/frontend/hro/igloo.log',
305   - // timestamp: true
306   - // }
  305 + file: {
  306 + filename: '/opt/work/hro/frontend/hro/igloo.log',
  307 + timestamp: true
  308 + }
307 309 }
308 310 }
309 311 };
... ...
... ... @@ -91,6 +91,9 @@ exports = module.exports = function (logger, rest, settings) {
91 91 }
92 92
93 93 function splitUrl(fullUrl) {
  94 + if(settings.prefix&&settings.prefix.length>1){
  95 + fullUrl=fullUrl.substring(settings.prefix.length-1);
  96 + }
94 97 var url = fullUrl.substring(4);
95 98 return url;
96 99 }
... ...
1 1 var passport = require('passport');
2 2 var clientRest = require('restler');
3   -var urlencode= require('urlencode');
4   -exports=module.exports=function(logger,rest,settings){
5   - function index(req,res,next){
  3 +var urlencode = require('urlencode');
  4 +var async = require('async');
  5 +var crypto = require('crypto');
  6 +
  7 +
  8 +exports = module.exports = function (logger, rest, settings) {
  9 + function index(req, res, next) {
6 10 logger.info(req.user);
7   - if(req.csrfToken)
8   - res.render('index',{'csrfToken':req.csrfToken()});
9   - else
10   - res.render('index',{'csrfToken':''});
  11 + if (req.csrfToken) {
  12 + res.render('index', { 'csrfToken': req.csrfToken() });
  13 + } else
  14 + res.render('index', { 'csrfToken': '' });
11 15 }
12 16
13   - function productDes(req,res,next){
14   - if(req.csrfToken)
15   - res.render('chat/new-chat',{'csrfToken':req.csrfToken()});
  17 + function indexPrefix(req, res, next) {
  18 + logger.info(req.user);
  19 + if (req.csrfToken) {
  20 + if (settings.prefix && settings.prefix.length > 1) {
  21 + res.redirect(settings.prefix.substring(0, settings.prefix.length - 1));
  22 + } else {
  23 + res.render('index', { 'csrfToken': req.csrfToken() });
  24 + }
  25 + } else
  26 + res.render('index', { 'csrfToken': '' });
  27 + }
  28 +
  29 + function productDes(req, res, next) {
  30 + if (req.csrfToken)
  31 + res.render('chat/new-chat', { 'csrfToken': req.csrfToken() });
16 32 else
17   - res.render('chat/new-chat',{'csrfToken':''});
  33 + res.render('chat/new-chat', { 'csrfToken': '' });
18 34 }
19 35
20   - function recharge(req,res,next){
  36 + function recharge(req, res, next) {
21 37
22   - var params=JSON.parse(urlencode.decode(req.query.params));
  38 + var params = JSON.parse(urlencode.decode(req.query.params));
23 39 console.log(params);
24   - if(req.csrfToken)
25   - res.render('recharge',{'recharge':params,'csrfToken':req.csrfToken()});
  40 + if (req.csrfToken)
  41 + res.render('recharge', { 'recharge': params, 'csrfToken': req.csrfToken() });
26 42 else
27   - res.render('recharge',{'recharge':params,'csrfToken':''});
28   -
  43 + res.render('recharge', { 'recharge': params, 'csrfToken': '' });
  44 +
29 45 }
30 46
31   - function register(req,res,next){
32   - if(req.csrfToken)
33   - res.render('newRegister',{'csrfToken':req.csrfToken()});
34   - else
35   - res.render('newRegister',{'csrfToken':''});
  47 + function register(req, res, next) {
  48 + if (req.csrfToken)
  49 + res.render('newRegister', { 'csrfToken': req.csrfToken() });
  50 + else
  51 + res.render('newRegister', { 'csrfToken': '' });
36 52 }
37 53
38   - function mobileRegister (req,res,next) {
39   - if(req.csrfToken)
40   - res.render('registerMobile',{'csrfToken':req.csrfToken()});
41   - else
42   - res.render('registerMobile',{'csrfToken':''});
  54 + function mobileRegister(req, res, next) {
  55 + if (req.csrfToken)
  56 + res.render('registerMobile', { 'csrfToken': req.csrfToken() });
  57 + else
  58 + res.render('registerMobile', { 'csrfToken': '' });
43 59 }
44 60
45   - function mobileRegisterSuccess (req,res,next) {
46   - if(req.csrfToken)
47   - res.render('registerMobileSuccess',{'csrfToken':req.csrfToken()});
48   - else
49   - res.render('registerMobileSuccess',{'csrfToken':''});
  61 + function mobileRegisterSuccess(req, res, next) {
  62 + if (req.csrfToken)
  63 + res.render('registerMobileSuccess', { 'csrfToken': req.csrfToken() });
  64 + else
  65 + res.render('registerMobileSuccess', { 'csrfToken': '' });
50 66 }
51 67
52   - function signIn(req,res,next){
53   - // console.log(req);
54   - if(req.csrfToken)
55   - res.render('newLogin',{'csrfToken':req.csrfToken()});
56   - else
57   - res.render('newLogin',{'csrfToken':''});
58   -
  68 + function signIn(req, res, next) {
  69 + // console.log(req);
  70 + if (req.csrfToken)
  71 + res.render('newLogin', { 'csrfToken': req.csrfToken() });
  72 + else
  73 + res.render('newLogin', { 'csrfToken': '' });
  74 +
59 75 }
60 76
61   - function doLogin(req,res,next){
62   - passport.authenticate('local', function(err, user, info) {
63   - console.log("doLogin:",err,user,info)
  77 + function doLogin(req, res, next) {
  78 + passport.authenticate('local', function (err, user, info) {
  79 + console.log("doLogin:", err, user, info)
64 80 if (err) { return next(err); }
65 81 if (!user) { return res.send(info); }
66   - req.logIn(user, function(err) {
  82 + req.logIn(user, function (err) {
67 83 if (err) { return next(err); }
68   - return res.send({'ok':'登录成功',user_info:req.session.passport.user.user_info});
  84 + return res.send({ 'ok': '登录成功', user_info: req.session.passport.user.user_info });
69 85 });
70   - })(req, res, next);
  86 + })(req, res, next);
71 87 }
72 88
73   - function signOut(req,res,next){
74   - if(req.session.passport&&req.session.passport.user&&req.session.passport.user.user_info&&req.session.passport.user.user_info.user)
75   - logger.info(req.session.passport.user.user_info.user,'You have successfully logged out');
  89 + function signOut(req, res, next) {
  90 + if (req.session.passport && req.session.passport.user && req.session.passport.user.user_info && req.session.passport.user.user_info.user)
  91 + logger.info(req.session.passport.user.user_info.user, 'You have successfully logged out');
76 92 req.logout();
77   - req.flash('success', 'You have successfully logged out');
78   - res.redirect('/');
79   - }
80   -
81   - function smsCodes(req,res,next){
82   - rest.postJson({
83   - 'baseUrl':'url',
84   - 'url':'auth/smscodes',
85   - 'params':req.body,
86   - 'callback':_cb,
87   - 'req':req,
88   - 'res':res,
89   - 'options':{},
90   - 'excludeToken':true
  93 + req.flash('success', 'You have successfully logged out');
  94 + res.redirect('/');
  95 + }
  96 +
  97 + function smsCodes(req, res, next) {
  98 + rest.postJson({
  99 + 'baseUrl': 'url',
  100 + 'url': 'auth/smscodes',
  101 + 'params': req.body,
  102 + 'callback': _cb,
  103 + 'req': req,
  104 + 'res': res,
  105 + 'options': {},
  106 + 'excludeToken': true
91 107 })
92   - function _cb(data,response){
93   - logger.info("back data:",data);
94   - if(response.statusCode<300){
95   - res.send({"code":200,"message":"发送成功"});
96   - }else{
97   - res.send(data);
98   - }
  108 + function _cb(data, response) {
  109 + logger.info("back data:", data);
  110 + if (response.statusCode < 300) {
  111 + res.send({ "code": 200, "message": "发送成功" });
  112 + } else {
  113 + res.send(data);
  114 + }
99 115 };
100 116 }
101 117
102   - function tenants(req,res,next){
  118 + function tenants(req, res, next) {
103 119 rest.register({
104   - 'baseUrl':'url',
105   - 'url':'tenants',
106   - 'params':req.body,
107   - 'callback':_cb,
108   - 'req':req,
109   - 'res':res,
110   - 'options':{},
111   - 'excludeToken':true
112   - });
113   - function _cb(data,response){
114   - logger.info("back data:",data);
115   - res.send(data);
  120 + 'baseUrl': 'url',
  121 + 'url': 'tenants',
  122 + 'params': req.body,
  123 + 'callback': _cb,
  124 + 'req': req,
  125 + 'res': res,
  126 + 'options': {},
  127 + 'excludeToken': true
  128 + });
  129 + function _cb(data, response) {
  130 + logger.info("back data:", data);
  131 + res.send(data);
116 132 };
117 133 }
118 134
119   - function resetPass(req,res){
120   - rest.putJson({
121   - 'baseUrl':'url',
122   - 'url':'auth/user',
123   - 'params':{
124   - 'user':req.body.user,
125   - 'password':req.body.password,
126   - 'again_password':req.body.again_password
  135 + function resetPass(req, res) {
  136 + rest.putJson({
  137 + 'baseUrl': 'url',
  138 + 'url': 'auth/user',
  139 + 'params': {
  140 + 'user': req.body.user,
  141 + 'password': req.body.password,
  142 + 'again_password': req.body.again_password
127 143 },
128   - 'callback':_cb,
129   - 'req':req,
130   - 'res':res,
131   - 'options':{}
  144 + 'callback': _cb,
  145 + 'req': req,
  146 + 'res': res,
  147 + 'options': {}
132 148 })
133   - function _cb(data,response){
134   - logger.info("back data:",data);
135   - res.send(data);
  149 + function _cb(data, response) {
  150 + logger.info("back data:", data);
  151 + res.send(data);
136 152 };
137 153 }
138 154
139   - function updatePassword(req,res){
140   - rest.patchJson({
141   - 'baseUrl':'url',
142   - 'url':'users/'+req.body.userId,
143   - 'params':{
  155 + function updatePassword(req, res) {
  156 + rest.patchJson({
  157 + 'baseUrl': 'url',
  158 + 'url': 'users/' + req.body.userId,
  159 + 'params': {
144 160 'password': req.body.password
145 161 },
146   - 'callback':_cb,
147   - 'req':req,
148   - 'res':res,
149   - 'options':{}
  162 + 'callback': _cb,
  163 + 'req': req,
  164 + 'res': res,
  165 + 'options': {}
150 166 })
151   - function _cb(data,response){
152   - logger.info("back data:",data);
153   - res.send(data);
  167 + function _cb(data, response) {
  168 + logger.info("back data:", data);
  169 + res.send(data);
154 170 };
155 171 }
156   -
157 172
158   - function loadUserInfo(req,res){
159   - if(req.session.passport.user&&req.session.passport.user.user_info){
160   - res.send({user_info:req.session.passport.user.user_info});
161   - }else{
162   - res.send({user_info:null});
  173 +
  174 + function loadUserInfo(req, res) {
  175 + settings
  176 + if (req.session.passport.user && req.session.passport.user.user_info) {
  177 + res.send({ user_info: req.session.passport.user.user_info, prefix: settings.prefix });
  178 + } else {
  179 + res.send({ user_info: null, prefix: settings.prefix });
163 180 }
164 181 }
165 182
166   - function getUploaderToken(req,res){
167   - rest.postJson({
168   - 'baseUrl':'ossUrl',
169   - 'url':'inits',
170   - 'params':req.body,
171   - 'callback':_cb,
172   - 'req':req,
173   - 'res':res,
174   - 'options':{}
  183 + function getUploaderToken(req, res) {
  184 + rest.postJson({
  185 + 'baseUrl': 'ossUrl',
  186 + 'url': 'inits',
  187 + 'params': req.body,
  188 + 'callback': _cb,
  189 + 'req': req,
  190 + 'res': res,
  191 + 'options': {}
175 192 })
176   - function _cb(data,response){
177   - logger.info("back data:",data);
178   - res.send(data);
179   - };
180   - }
181   -
182   - function getObjectTokenByID(req,res){
183   - rest.get({
184   - 'baseUrl':'ossUrl',
185   - 'url':'objects/'+req.body.file_id,
186   - 'params':{},
187   - 'callback':_cb,
188   - 'req':req,
189   - 'res':res,
190   - 'options':{}
  193 + function _cb(data, response) {
  194 + logger.info("back data:", data);
  195 + res.send(data);
  196 + };
  197 + }
  198 +
  199 + function getObjectTokenByID(req, res) {
  200 + rest.get({
  201 + 'baseUrl': 'ossUrl',
  202 + 'url': 'objects/' + req.body.file_id,
  203 + 'params': {},
  204 + 'callback': _cb,
  205 + 'req': req,
  206 + 'res': res,
  207 + 'options': {}
191 208 })
192   - function _cb(data,response){
193   - logger.info("back data:",data);
194   - res.send(data);
195   - };
196   - }
197   -
198   - function delOSSObject(req,res){
199   - rest.del({
200   - 'baseUrl':'ossUrl',
201   - 'url':'s3objects/'+req.body.request_id+'?bucket='+req.body.bucket+'&file='+req.body.name,
202   - 'params':{},
203   - 'callback':_cb,
204   - 'req':req,
205   - 'res':res,
206   - 'options':{}
  209 + function _cb(data, response) {
  210 + logger.info("back data:", data);
  211 + res.send(data);
  212 + };
  213 + }
  214 +
  215 + function delOSSObject(req, res) {
  216 + rest.del({
  217 + 'baseUrl': 'ossUrl',
  218 + 'url': 's3objects/' + req.body.request_id + '?bucket=' + req.body.bucket + '&file=' + req.body.name,
  219 + 'params': {},
  220 + 'callback': _cb,
  221 + 'req': req,
  222 + 'res': res,
  223 + 'options': {}
207 224 })
208   - function _cb(data,response){
209   - logger.info("back data:",data);
210   - console.log(response.statusCode)
211   - if(response.statusCode<300){
212   - res.send({'delete':'ok'});
213   - }
  225 + function _cb(data, response) {
  226 + logger.info("back data:", data);
  227 + console.log(response.statusCode)
  228 + if (response.statusCode < 300) {
  229 + res.send({ 'delete': 'ok' });
  230 + }
214 231 };
215 232 }
216 233
217   - function smsVerification(req,res,next){
218   - rest.postJson({
219   - 'baseUrl':'url',
220   - 'url':'auth/sms_verification',
221   - 'params':req.body,
222   - 'callback':_cb,
223   - 'req':req,
224   - 'res':res,
225   - 'options':{},
226   - 'excludeToken':true
  234 + function smsVerification(req, res, next) {
  235 + rest.postJson({
  236 + 'baseUrl': 'url',
  237 + 'url': 'auth/sms_verification',
  238 + 'params': req.body,
  239 + 'callback': _cb,
  240 + 'req': req,
  241 + 'res': res,
  242 + 'options': {},
  243 + 'excludeToken': true
227 244 })
228   - function _cb(data,response){
229   - logger.info("back data:",data);
230   - if(response.statusCode<300){
231   - res.send({"code":200,"message":"发送成功"});
232   - }else{
233   - res.send({"code":response.statusCode,"message":data.message,'errors':data.errors});
234   - }
  245 + function _cb(data, response) {
  246 + logger.info("back data:", data);
  247 + if (response.statusCode < 300) {
  248 + res.send({ "code": 200, "message": "发送成功" });
  249 + } else {
  250 + res.send({ "code": response.statusCode, "message": data.message, 'errors': data.errors });
  251 + }
235 252 };
236 253 }
237 254
238   - function healthMonitor(req,res){
  255 + function healthMonitor(req, res) {
239 256 res.statusCode = 200;
240   - return res.send('status ok');
  257 + return res.send('status ok');
241 258 }
242 259
243 260
244   - function updateUserRoles(req,res){
245   - rest.putJson({
246   - 'baseUrl':'url',
247   - 'url':'user_roles/'+req.body.user_id,
248   - 'params':req.body.roles,
249   - 'callback':_cb,
250   - 'req':req,
251   - 'res':res,
252   - 'options':{}
  261 + function updateUserRoles(req, res) {
  262 + rest.putJson({
  263 + 'baseUrl': 'url',
  264 + 'url': 'user_roles/' + req.body.user_id,
  265 + 'params': req.body.roles,
  266 + 'callback': _cb,
  267 + 'req': req,
  268 + 'res': res,
  269 + 'options': {}
253 270 })
254   - function _cb(data,response){
255   - logger.info("back data:",data);
256   - if(response.statusCode<300){
257   - res.send({'back':'ok'});
258   - }else{
  271 + function _cb(data, response) {
  272 + logger.info("back data:", data);
  273 + if (response.statusCode < 300) {
  274 + res.send({ 'back': 'ok' });
  275 + } else {
259 276 res.send(data);
260   - }
  277 + }
261 278 };
262 279 }
263 280
264   - function getRoles(req,res,next){
265   - rest.get({
266   - 'baseUrl':'url',
267   - 'url':'roles',
268   - 'params':{},
269   - 'callback':_cb,
270   - 'req':req,
271   - 'res':res,
272   - 'options':{}
  281 + function getRoles(req, res, next) {
  282 + rest.get({
  283 + 'baseUrl': 'url',
  284 + 'url': 'roles',
  285 + 'params': {},
  286 + 'callback': _cb,
  287 + 'req': req,
  288 + 'res': res,
  289 + 'options': {}
273 290 })
274   - function _cb(data,response){
275   - logger.info("back data:",data);
276   - res.send(data);
  291 + function _cb(data, response) {
  292 + logger.info("back data:", data);
  293 + res.send(data);
277 294 };
278 295 }
279 296
280 297
281   - function getUserRoles(req,res,next){
282   - rest.get({
283   - 'baseUrl':'url',
284   - 'url':'user_roles?user='+urlencode(req.body.user)+'&limit='+req.body.limit+'&offset='+req.body.offset,
285   - 'params':{},
286   - 'callback':_cb,
287   - 'req':req,
288   - 'res':res,
289   - 'options':{}
  298 + function getUserRoles(req, res, next) {
  299 + rest.get({
  300 + 'baseUrl': 'url',
  301 + 'url': 'user_roles?user=' + urlencode(req.body.user) + '&limit=' + req.body.limit + '&offset=' + req.body.offset,
  302 + 'params': {},
  303 + 'callback': _cb,
  304 + 'req': req,
  305 + 'res': res,
  306 + 'options': {}
290 307 })
291   - function _cb(data,response){
292   - logger.info("back data:",data);
293   - res.send(data);
  308 + function _cb(data, response) {
  309 + logger.info("back data:", data);
  310 + res.send(data);
294 311 };
295 312 }
296 313
297   - function getTenant(req,res){
298   - rest.get({
299   - 'baseUrl':'url',
300   - 'url':'tenants/'+req.body.tenant_id,
301   - 'params':{},
302   - 'callback':_cb,
303   - 'req':req,
304   - 'res':res,
305   - 'options':{}
  314 + function getTenant(req, res) {
  315 + rest.get({
  316 + 'baseUrl': 'url',
  317 + 'url': 'tenants/' + req.body.tenant_id,
  318 + 'params': {},
  319 + 'callback': _cb,
  320 + 'req': req,
  321 + 'res': res,
  322 + 'options': {}
306 323 })
307   - function _cb(data,response){
308   - logger.info("back data:",data);
309   - res.send(data);
  324 + function _cb(data, response) {
  325 + logger.info("back data:", data);
  326 + res.send(data);
310 327 };
311 328 }
312 329
313   - function updateTenant(req,res){
314   - rest.putJson({
315   - 'baseUrl':'url',
316   - 'url':'tenants/'+req.body.tenant_id,
317   - 'params':req.body.tenant,
318   - 'callback':_cb,
319   - 'req':req,
320   - 'res':res,
321   - 'options':{}
  330 + function updateTenant(req, res) {
  331 + rest.putJson({
  332 + 'baseUrl': 'url',
  333 + 'url': 'tenants/' + req.body.tenant_id,
  334 + 'params': req.body.tenant,
  335 + 'callback': _cb,
  336 + 'req': req,
  337 + 'res': res,
  338 + 'options': {}
322 339 })
323   - function _cb(data,response){
324   - logger.info("back data:",data);
325   - res.send(data);
  340 + function _cb(data, response) {
  341 + logger.info("back data:", data);
  342 + res.send(data);
326 343 };
327 344 }
328 345
329   - function offer(req,res){
330   - rest.get({
331   - 'baseUrl':'hrUrl',
332   - 'url':'offers/'+req.params.requestId+'?tenant_id='+req.query.tenant_id,
333   - 'params':{},
334   - 'callback':_cb,
335   - 'req':req,
336   - 'res':res,
337   - 'options':{},
338   - 'excludeToken':true
  346 + function offer(req, res) {
  347 + rest.get({
  348 + 'baseUrl': 'hrUrl',
  349 + 'url': 'offers/' + req.params.requestId + '?tenant_id=' + req.query.tenant_id,
  350 + 'params': {},
  351 + 'callback': _cb,
  352 + 'req': req,
  353 + 'res': res,
  354 + 'options': {},
  355 + 'excludeToken': true
339 356 })
340   - function _cb(data,response){
341   - logger.info("back data:",data);
342   - //res.send(data);
343   - console.log(data);
344   - data['offerId']=req.params.requestId;
345   - data['tenantId']=req.query.tenant_id;
346   - res.render('offer',data);
347   - };
348   - }
349   -
350   - function onboardStatus(req,res){
351   - rest.get({
352   - 'baseUrl':'hrUrl',
353   - 'url':'onboard-status',
354   - 'params':{},
355   - 'callback':_cb,
356   - 'req':req,
357   - 'res':res,
358   - 'options':{},
359   - 'useUrl':true
  357 + function _cb(data, response) {
  358 + logger.info("back data:", data);
  359 + //res.send(data);
  360 + console.log(data);
  361 + data['offerId'] = req.params.requestId;
  362 + data['tenantId'] = req.query.tenant_id;
  363 + res.render('offer', data);
  364 + };
  365 + }
  366 +
  367 + function onboardStatus(req, res) {
  368 + rest.get({
  369 + 'baseUrl': 'hrUrl',
  370 + 'url': 'onboard-status',
  371 + 'params': {},
  372 + 'callback': _cb,
  373 + 'req': req,
  374 + 'res': res,
  375 + 'options': {},
  376 + 'useUrl': true
360 377 })
361   - function _cb(data,response){
362   - logger.info("back data:",data);
363   - res.send(data);
  378 + function _cb(data, response) {
  379 + logger.info("back data:", data);
  380 + res.send(data);
364 381 };
365 382 }
366 383
367   - function dowloadApp(req,res){
368   - var mobileAgent=req.headers['user-agent'].toLowerCase();
369   - var agent={
  384 + function dowloadApp(req, res) {
  385 + var mobileAgent = req.headers['user-agent'].toLowerCase();
  386 + var agent = {
370 387 android: mobileAgent.indexOf('android') > -1 || mobileAgent.indexOf('Adr') > -1,
371   - iPhone:mobileAgent.indexOf('iphone') > -1,
  388 + iPhone: mobileAgent.indexOf('iphone') > -1,
372 389 iPad: mobileAgent.indexOf('ipad') > -1
373 390 }
374   - if(agent.iPhone||agent.iPad){
  391 + if (agent.iPhone || agent.iPad) {
375 392 res.redirect(301, 'https://itunes.apple.com/cn/app/%E8%96%AA%E5%91%97/id1140779439?l=en&mt=8');
376   - }else if(agent.android){
  393 + } else if (agent.android) {
377 394 res.redirect(301, 'http://krhrimg.oss-cn-beijing.aliyuncs.com/appdownload/production/android/krhr-android.apk');
378   - }else{
  395 + } else {
379 396 res.redirect(301, 'http://krhrimg.oss-cn-beijing.aliyuncs.com/appdownload/production/android/krhr-android.apk');
380   - }
  397 + }
381 398 }
382 399
383   - function softwareLicense (req,res,next) {
  400 + function softwareLicense(req, res, next) {
384 401 res.render('softwareLicense');
385 402 }
386 403
387   - function changePassForRegister(req,res,next){
388   - var options={
389   - 'baseUrl':'url',
390   - 'url':'users/'+req.body.user_id,
391   - 'params':{
  404 + function changePassForRegister(req, res, next) {
  405 + var options = {
  406 + 'baseUrl': 'url',
  407 + 'url': 'users/' + req.body.user_id,
  408 + 'params': {
392 409 'password': req.body.password
393 410 },
394   - 'callback':_cb,
395   - 'req':req,
396   - 'res':res,
397   - 'options':{}
  411 + 'callback': _cb,
  412 + 'req': req,
  413 + 'res': res,
  414 + 'options': {}
398 415 };
399   - if(req.body.access_token){
  416 + if (req.body.access_token) {
400 417 console.log("@@@!!!!!!!!!!!!!!!!");
401   - options.options={
402   - "accessToken":req.body.access_token
  418 + options.options = {
  419 + "accessToken": req.body.access_token
403 420 };
404   - options['excludeToken']=true;
405   - }
  421 + options['excludeToken'] = true;
  422 + }
406 423 rest.patchJson(options)
407   - function _cb(data,response){
408   - logger.info("back data:",data);
409   - res.send(data);
  424 + function _cb(data, response) {
  425 + logger.info("back data:", data);
  426 + res.send(data);
410 427 };
411 428 }
412 429
413   - function changeTenant(req,res,next){
414   - var params={
415   - grant_type:'refresh_token',
416   - scope:'global_access:tenant_admin,tenant:'+req.body.id,
417   - refresh_token:req.session.passport.user.refreshToken
418   - }
419   - req.session.passport.user.token='';
420   - rest.postJson({
421   - 'baseUrl':'url',
422   - 'url':settings.restful.url+'uaa'+settings.restful.version+'/auth/tokens',
423   - 'useUrl':true,
424   - 'params':params,
425   - 'callback':_cb,
426   - 'req':req,
427   - 'res':res,
428   - 'options':{},
429   - 'excludeToken':true
  430 + function changeTenant(req, res, next) {
  431 + var params = {
  432 + grant_type: 'refresh_token',
  433 + scope: 'global_access:tenant_admin,tenant:' + req.body.id,
  434 + refresh_token: req.session.passport.user.refreshToken
  435 + }
  436 + req.session.passport.user.token = '';
  437 + rest.postJson({
  438 + 'baseUrl': 'url',
  439 + 'url': settings.restful.url + 'uaa' + settings.restful.version + '/auth/tokens',
  440 + 'useUrl': true,
  441 + 'params': params,
  442 + 'callback': _cb,
  443 + 'req': req,
  444 + 'res': res,
  445 + 'options': {},
  446 + 'excludeToken': true
430 447 })
431   - function _cb(data,response){
432   - console.log(data);
433   - logger.info("back data:",data);
434   - if(response.statusCode<300){
435   - req.session.passport.user.token=data.access_token;
436   - req.session.passport.user.refreshToken=data.refresh_token;
437   - req.session.passport.user.user_info={
438   - 'user':data.user,
439   - 'perms':[],
440   - 'tenant':data.tenant,
441   - 'scope':data.scope,
  448 + function _cb(data, response) {
  449 + console.log(data);
  450 + logger.info("back data:", data);
  451 + if (response.statusCode < 300) {
  452 + req.session.passport.user.token = data.access_token;
  453 + req.session.passport.user.refreshToken = data.refresh_token;
  454 + req.session.passport.user.user_info = {
  455 + 'user': data.user,
  456 + 'perms': [],
  457 + 'tenant': data.tenant,
  458 + 'scope': data.scope,
442 459 'oss': req.session.passport.user.user_info.oss
443   - };
444   - req.session.save(function(err) {
  460 + };
  461 + req.session.save(function (err) {
445 462 rest.get({
446   - 'baseUrl':'url',
447   - 'url': settings.restful.url+'uaa'+settings.restful.version+'/perms/detail',
448   - 'useUrl':true,
449   - 'params':{},
450   - 'callback':_scb,
451   - 'req':req,
452   - 'res':res,
453   - 'options':{}
454   - });
455   - })
456   - }else{
457   - res.send({"code":response.statusCode,"message":data.message,initialize_done:"n"});
458   - }
  463 + 'baseUrl': 'url',
  464 + 'url': settings.restful.url + 'uaa' + settings.restful.version + '/perms/detail',
  465 + 'useUrl': true,
  466 + 'params': {},
  467 + 'callback': _scb,
  468 + 'req': req,
  469 + 'res': res,
  470 + 'options': {}
  471 + });
  472 + })
  473 + } else {
  474 + res.send({ "code": response.statusCode, "message": data.message, initialize_done: "n" });
  475 + }
459 476 };
460   - function _scb(data1,response){
461   - if(response.statusCode<300&&data1.items){
462   - req.session.passport.user.user_info.perms=data1.items;
463   - req.session.save(function(err) {
  477 + function _scb(data1, response) {
  478 + if (response.statusCode < 300 && data1.items) {
  479 + req.session.passport.user.user_info.perms = data1.items;
  480 + req.session.save(function (err) {
464 481 // res.send({"code":200,"message":"切换租户成功"});
465 482 rest.get({
466   - 'baseUrl':'url',
467   - 'url': settings.restful.url+'filemeta'+settings.restful.version+'/config',
468   - 'useUrl':true,
469   - 'params':{},
470   - 'callback':_scb1,
471   - 'req':req,
472   - 'res':res,
473   - 'options':{}
474   - });
475   - })
476   - }else{
477   - res.send({"code":response.statusCode,"message":data1.message});
478   - }
479   - }
480   - function _scb1(data2,response){
481   - if(response.statusCode<300&&data2&&data2.bucket){
482   - req.session.passport.user.user_info.oss=data2;
483   - req.session.save(function(err) {
484   - res.send({"code":200,"message":"切换租户成功"});
485   - });
486   - }else {
487   - res.send({"code":200,"message":"切换租户失败"});
488   - }
  483 + 'baseUrl': 'url',
  484 + 'url': settings.restful.url + 'filemeta' + settings.restful.version + '/config',
  485 + 'useUrl': true,
  486 + 'params': {},
  487 + 'callback': _scb1,
  488 + 'req': req,
  489 + 'res': res,
  490 + 'options': {}
  491 + });
  492 + })
  493 + } else {
  494 + res.send({ "code": response.statusCode, "message": data1.message });
  495 + }
  496 + }
  497 + function _scb1(data2, response) {
  498 + if (response.statusCode < 300 && data2 && data2.bucket) {
  499 + req.session.passport.user.user_info.oss = data2;
  500 + req.session.save(function (err) {
  501 + res.send({ "code": 200, "message": "切换租户成功" });
  502 + });
  503 + } else {
  504 + res.send({ "code": 200, "message": "切换租户失败" });
  505 + }
489 506 }
490 507 }
491 508
492 509
493   - function sendRejectOffer(req,res){
494   - rest.get({
495   - 'baseUrl':'hrUrl',
496   - 'url':req.body.url, //传一个参数
497   - 'params':{},
498   - 'callback':_cb,
499   - 'req':req,
500   - 'res':res,
501   - 'options':{},
502   - 'excludeToken':true,
503   - 'useUrl':true
  510 + function sendRejectOffer(req, res) {
  511 + rest.get({
  512 + 'baseUrl': 'hrUrl',
  513 + 'url': req.body.url, //传一个参数
  514 + 'params': {},
  515 + 'callback': _cb,
  516 + 'req': req,
  517 + 'res': res,
  518 + 'options': {},
  519 + 'excludeToken': true,
  520 + 'useUrl': true
504 521 });
505   - function _cb(data,response){
506   - logger.info("back data:",data);
507   - if(response.statusCode<300){
508   - res.send({'action':'ok'});
509   - }else{
  522 + function _cb(data, response) {
  523 + logger.info("back data:", data);
  524 + if (response.statusCode < 300) {
  525 + res.send({ 'action': 'ok' });
  526 + } else {
510 527 res.send(data);
511   - }
  528 + }
512 529 };
513   - }
514   -
515   - function acceptOffer(req,res){
516   - rest.get({
517   - 'baseUrl':'hrUrl',
518   - 'url':req.body.url, //传一个参数
519   - 'params':{},
520   - 'callback':_cb,
521   - 'req':req,
522   - 'res':res,
523   - 'options':{},
524   - 'excludeToken':true,
525   - 'useUrl':true
  530 + }
  531 +
  532 + function acceptOffer(req, res) {
  533 + rest.get({
  534 + 'baseUrl': 'hrUrl',
  535 + 'url': req.body.url, //传一个参数
  536 + 'params': {},
  537 + 'callback': _cb,
  538 + 'req': req,
  539 + 'res': res,
  540 + 'options': {},
  541 + 'excludeToken': true,
  542 + 'useUrl': true
526 543 });
527   - function _cb(data,response){
528   - logger.info("back data:",data);
529   - if(response.statusCode<300){
530   - res.send({'action':'ok'});
531   - }else{
  544 + function _cb(data, response) {
  545 + logger.info("back data:", data);
  546 + if (response.statusCode < 300) {
  547 + res.send({ 'action': 'ok' });
  548 + } else {
532 549 res.send(data);
533   - }
  550 + }
534 551 };
535 552 }
536 553
537   - function imTokens(req,res){
538   - rest.post({
539   - 'url':'auth/im_tokens',
540   - 'params':req.body,
541   - 'callback':_cb,
542   - 'req':req,
543   - 'res':res,
544   - 'options':{}
  554 + function imTokens(req, res) {
  555 + rest.post({
  556 + 'url': 'auth/im_tokens',
  557 + 'params': req.body,
  558 + 'callback': _cb,
  559 + 'req': req,
  560 + 'res': res,
  561 + 'options': {}
545 562 });
546   - function _cb(data,response){
547   - logger.info("back data:",data);
548   - res.send(data);
  563 + function _cb(data, response) {
  564 + logger.info("back data:", data);
  565 + res.send(data);
549 566 };
550 567 }
551 568
552   - function listChannels(req,res,next){
553   - rest.get({
554   - 'baseUrl':'chatUrl',
555   - 'url':'channels?page_size=10&page=0&status=active',
556   - 'params':req.body,
557   - 'callback':_cb,
558   - 'req':req,
559   - 'res':res,
560   - 'options':{}
  569 + function listChannels(req, res, next) {
  570 + rest.get({
  571 + 'baseUrl': 'chatUrl',
  572 + 'url': 'channels?page_size=10&page=0&status=active',
  573 + 'params': req.body,
  574 + 'callback': _cb,
  575 + 'req': req,
  576 + 'res': res,
  577 + 'options': {}
561 578 })
562   - function _cb(data,response){
563   - logger.info("back data:",data);
564   - res.send(data);
  579 + function _cb(data, response) {
  580 + logger.info("back data:", data);
  581 + res.send(data);
565 582 };
566 583 }
567 584
568   - function filemeta(req,res,next){
569   - var fullPath=settings.restful.url+'filemeta'+settings.restful.version+'/object-redirect';
570   - fullPath=fullPath+"?"+"bucket="+req.query.bucket+"&object="+encodeURIComponent(req.query.object);
571   - var options={
572   - 'service_catalog':'',
573   - 'url':fullPath,
574   - 'useUrl':true,
575   - 'params':req.body,
576   - 'callback':_cb,
577   - 'req':req,
578   - 'res':res,
579   - 'options':{}
  585 + function filemeta(req, res, next) {
  586 + var fullPath = settings.restful.url + 'filemeta' + settings.restful.version + '/object-redirect';
  587 + fullPath = fullPath + "?" + "bucket=" + req.query.bucket + "&object=" + encodeURIComponent(req.query.object);
  588 + var options = {
  589 + 'service_catalog': '',
  590 + 'url': fullPath,
  591 + 'useUrl': true,
  592 + 'params': req.body,
  593 + 'callback': _cb,
  594 + 'req': req,
  595 + 'res': res,
  596 + 'options': {}
580 597 };
581   - rest.get(options);
582   - function _cb(data,response){
583   - if(data&&data.download_url){
584   - if(req.query.type&&'json'==req.query.type){
  598 + rest.get(options);
  599 + function _cb(data, response) {
  600 + if (data && data.download_url) {
  601 + if (req.query.type && 'json' == req.query.type) {
585 602 res.send(data);
586   - }else{
587   - res.redirect(301, data.download_url);
  603 + } else {
  604 + res.redirect(301, data.download_url);
588 605 }
589   - }else {
  606 + } else {
590 607 res.send(data);
591   - }
592   - }
593   - }
594   -
595   -
596   - function getCustomerQrcode(req,res,next){
597   - var fullPath=settings.restful.url+'crm'+settings.restful.version+'/customers/'+req.query.id+'/qrcode';
598   - var options={
599   - 'service_catalog':'',
600   - 'url':fullPath,
601   - 'useUrl':true,
602   - 'params':req.body,
603   - 'callback':_cb,
604   - 'req':req,
605   - 'res':res,
606   - 'options':{}
  608 + }
  609 + }
  610 + }
  611 +
  612 +
  613 + function getCustomerQrcode(req, res, next) {
  614 + var fullPath = settings.restful.url + 'crm' + settings.restful.version + '/customers/' + req.query.id + '/qrcode';
  615 + var options = {
  616 + 'service_catalog': '',
  617 + 'url': fullPath,
  618 + 'useUrl': true,
  619 + 'params': req.body,
  620 + 'callback': _cb,
  621 + 'req': req,
  622 + 'res': res,
  623 + 'options': {}
607 624 };
608   - rest.get(options);
609   - function _cb(data,response){
610   - if(data&&data.url_path){
611   - res.redirect(301, data.url_path);
612   - }else {
  625 + rest.get(options);
  626 + function _cb(data, response) {
  627 + if (data && data.url_path) {
  628 + res.redirect(301, data.url_path);
  629 + } else {
613 630 res.send(data);
614   - }
615   - }
616   - }
617   -
618   - function getPositionQrcode(req,res,next){
619   - var fullPath=settings.restful.url+'recruit'+settings.restful.version+'/positions/'+req.query.id+'/qrcode';
620   - var options={
621   - 'service_catalog':'',
622   - 'url':fullPath,
623   - 'useUrl':true,
624   - 'params':req.body,
625   - 'callback':_cb,
626   - 'req':req,
627   - 'res':res,
628   - 'options':{}
  631 + }
  632 + }
  633 + }
  634 +
  635 + function getPositionQrcode(req, res, next) {
  636 + var fullPath = settings.restful.url + 'recruit' + settings.restful.version + '/positions/' + req.query.id + '/qrcode';
  637 + var options = {
  638 + 'service_catalog': '',
  639 + 'url': fullPath,
  640 + 'useUrl': true,
  641 + 'params': req.body,
  642 + 'callback': _cb,
  643 + 'req': req,
  644 + 'res': res,
  645 + 'options': {}
629 646 };
630   - rest.get(options);
631   - function _cb(data,response){
632   - if(data&&data.url_path){
633   - res.redirect(301, data.url_path);
634   - }else {
  647 + rest.get(options);
  648 + function _cb(data, response) {
  649 + if (data && data.url_path) {
  650 + res.redirect(301, data.url_path);
  651 + } else {
635 652 res.send(data);
636   - }
  653 + }
637 654 }
638 655 }
639 656
640   - function getOSSConfig(req,res,next){
641   - var fullPath=settings.restful.url+'filemeta'+settings.restful.version+'/config';
642   - var options={
643   - 'service_catalog':'',
644   - 'url':fullPath,
645   - 'useUrl':true,
646   - 'params':req.body,
647   - 'callback':_cb,
648   - 'req':req,
649   - 'res':res,
650   - 'options':{}
  657 + function getOSSConfig(req, res, next) {
  658 + var fullPath = settings.restful.url + 'filemeta' + settings.restful.version + '/config';
  659 + var options = {
  660 + 'service_catalog': '',
  661 + 'url': fullPath,
  662 + 'useUrl': true,
  663 + 'params': req.body,
  664 + 'callback': _cb,
  665 + 'req': req,
  666 + 'res': res,
  667 + 'options': {}
651 668 };
652   - rest.get(options);
653   - function _cb(data,response){
654   - if(data&&data.bucket){
655   - req.session.passport.user.user_info.oss=data;
656   - req.session.save(function(err) {
657   - res.send({"code":200,"message":"oss配置加载成功"});
658   - });
659   - }else {
660   - res.send({"code":200,"message":"oss配置加载失败"});
661   - }
662   - }
663   - }
664   -
665   - function weidianTempLate(req,res,next){
  669 + rest.get(options);
  670 + function _cb(data, response) {
  671 + if (data && data.bucket) {
  672 + req.session.passport.user.user_info.oss = data;
  673 + req.session.save(function (err) {
  674 + res.send({ "code": 200, "message": "oss配置加载成功" });
  675 + });
  676 + } else {
  677 + res.send({ "code": 200, "message": "oss配置加载失败" });
  678 + }
  679 + }
  680 + }
  681 +
  682 + function weidianTempLate(req, res, next) {
666 683 const { params } = req;
667   - var fullPath=settings.restful.url + 'socialwork/internal/minishop/' + params.id;
668   - var options={
669   - 'service_catalog':'',
670   - 'url':fullPath,
671   - 'useUrl':true,
672   - 'params':req.body,
673   - 'callback':_cb,
674   - 'req':req,
675   - 'res':res,
676   - 'options':{},
677   - 'excludeToken':true,
  684 + var fullPath = settings.restful.url + 'socialwork/internal/minishop/' + params.id;
  685 + var options = {
  686 + 'service_catalog': '',
  687 + 'url': fullPath,
  688 + 'useUrl': true,
  689 + 'params': req.body,
  690 + 'callback': _cb,
  691 + 'req': req,
  692 + 'res': res,
  693 + 'options': {},
  694 + 'excludeToken': true,
678 695 };
679   - rest.get(options);
680   - function _cb(data,response){
681   - logger.info("back data:",data);
682   - if(response.statusCode<300){
683   - const { shop_logo=[], shop_name='', shop_comment='' } = data;
684   - let imgUrl = '';
685   - if (shop_logo.length > 0) {
686   - imgUrl = 'http://oss.workai.com.cn/public/' + shop_logo[0].object;
687   - }
688   - res.render('template/weiDian',{
689   - imgUrl: imgUrl,
690   - shop_name: shop_name,
691   - shop_comment: shop_comment,
692   - })
693   - }else{
694   - res.render('template/weiDian')
695   - }
  696 + rest.get(options);
  697 + function _cb(data, response) {
  698 + logger.info("back data:", data);
  699 + if (response.statusCode < 300) {
  700 + const { shop_logo = [], shop_name = '', shop_comment = '' } = data;
  701 + let imgUrl = '';
  702 + if (shop_logo.length > 0) {
  703 + imgUrl = 'http://oss.workai.com.cn/public/' + shop_logo[0].object;
  704 + }
  705 + res.render('template/weiDian', {
  706 + imgUrl: imgUrl,
  707 + shop_name: shop_name,
  708 + shop_comment: shop_comment,
  709 + })
  710 + } else {
  711 + res.render('template/weiDian')
  712 + }
696 713 };
697   -
  714 +
  715 + }
  716 +
  717 +
  718 + function workaiSecurityOAuth(req, res, next) {
  719 + var params = req.query;
  720 + if (params.authorization_code) {
  721 + var passport = {
  722 + user: {
  723 + refreshToken: "",
  724 + token: "",
  725 + service_catalog: {},
  726 + user_info: {},
  727 + err: null
  728 + }
  729 + };
  730 + async.waterfall([
  731 + function (callback) {//第三方登录
  732 + var tempParams = {
  733 + "grant_type": 'authorization_code_v1',
  734 + "code": params.authorization_code
  735 + };
  736 + // var tempParams={
  737 + // "grant_type":"password",
  738 + // "username":"18510929499",
  739 + // "scope":"global_access:tenant_admin",
  740 + // "password":"a123456"
  741 + // };
  742 + rest.restful.postJson(settings.restful.url + 'uaa/v1/auth/tokens', tempParams, {
  743 + headers: { 'Content-Type': 'application/json', "Accept": "application/json" }
  744 + })
  745 + .on('success', function (data, response) {
  746 + logger.info("Third login json:", data);
  747 + if (data.access_token) {
  748 + var scopes = data.scope.split(",");
  749 + passport.user.token = data.access_token;
  750 + passport.user.refreshToken = data.refresh_token;
  751 + passport.user.user_info = data.user;
  752 + passport.user.tenant_info = data.tenant;
  753 + passport.user.customer_info = data.customer;
  754 + passport.user.user_info.perms = data.perms;
  755 + passport.user.type = data.user.type;
  756 + passport.user.real_auth_status = data.user.real_auth_status;
  757 + passport.user.credential_status = data.user.credential_status;
  758 + passport.user.user_info.scope = scopes[0];
  759 + callback(null, data)
  760 + } else {
  761 + var err = new Error('Third login err');
  762 + passport.user.err = data.message;
  763 + callback(err, data);
  764 + }
  765 + }).on('error', function (err, response) {
  766 + logger.error("Third login error", err);
  767 + var err = new Error('Third login err');
  768 + callback(err, response);
  769 + }).on('fail', function (data, response) {
  770 + logger.error("Third login fail", data);
  771 + var err = new Error('Third login err');
  772 + callback(data, response);
  773 + });
  774 + }, function (data, callback) { //获取机构列表
  775 + var tempHead = {};
  776 + var ip = req.ip.match(/\d+\.\d+\.\d+\.\d+/)[0];
  777 + var user_agent = req.headers['user-agent'] || '';
  778 + tempHead['SXClientIP'] = ip;
  779 + tempHead['User-Agent'] = user_agent;
  780 + rest.restful.get(settings.restful.url + 'uaa/v1/tenants?all=true', { accessToken: data.access_token, headers: tempHead })
  781 + .on('success', function (data1, response) {
  782 + logger.info("Third login tenants list:", data1);
  783 + if (data1 && data1.items && data1.items.length > 0) {
  784 + callback(null, data1.items)
  785 + } else {
  786 + var err = new Error('Third login tenants list err');
  787 + passport.user.err = data.message;
  788 + callback(err, data);
  789 + }
  790 + }).on('error', function (err, response) {
  791 + var err = new Error('Third login tenants list err');
  792 + callback(err, response);
  793 + }).on('fail', function (data, response) {
  794 + var err = new Error('Third login tenants list fail');
  795 + callback(data, response);
  796 + });
  797 + }, function (data, callback) { //刷新token
  798 + if (data && data.length == 1) {
  799 + var params = {
  800 + grant_type: 'refresh_token',
  801 + scope: 'global_access:tenant_admin,tenant:' + data[0].id,
  802 + refresh_token: passport.user.refreshToken
  803 + }
  804 + passport.user.token = '';
  805 + rest.restful.postJson(settings.restful.url + 'uaa/v1/auth/tokens', params, {
  806 + headers: { 'Content-Type': 'application/json', "Accept": "application/json" }
  807 + })
  808 + .on('success', function (data2, response) {
  809 + logger.info("Third login json:", data2);
  810 + if (data2.access_token) {
  811 + var scopes = data2.scope.split(",");
  812 + passport.user.token = data2.access_token;
  813 + passport.user.refreshToken = data2.refresh_token;
  814 + passport.user.user_info = data2.user;
  815 + passport.user.tenant_info = data2.tenant;
  816 + passport.user.customer_info = data2.customer;
  817 + passport.user.user_info.perms = data2.perms;
  818 + passport.user.type = data2.user.type;
  819 + passport.user.real_auth_status = data2.user.real_auth_status;
  820 + passport.user.credential_status = data2.user.credential_status;
  821 + passport.user.user_info.scope = scopes[0];
  822 + callback(null, data2)
  823 + } else {
  824 + var err = new Error('Third login err');
  825 + passport.user.err = data2.message;
  826 + callback(err, data2);
  827 + }
  828 + }).on('error', function (err, response) {
  829 + logger.error("Third login error", err);
  830 + var err = new Error('Third login err');
  831 + callback(err, response);
  832 + }).on('fail', function (data2, response) {
  833 + logger.error("Third login fail", data2);
  834 + var err = new Error('Third login err');
  835 + callback(data2, response);
  836 + });
  837 + } else if (data && data.length > 1) {// #/login/choose-tenant
  838 + callback(null, data)
  839 + } else {
  840 + var err = new Error('Third login tenants list item error');
  841 + callback(err, data);
  842 + }
  843 + }], function (err, result) {
  844 + if (err) {//登陆失败跳转失败页
  845 + res.render('loginerr', { 'err': err });
  846 + } else if (result instanceof Array && result.length > 1) {//登陆成功跳转选择机构页
  847 + req.session.passport = passport;
  848 + req.session.save(function (err) {
  849 + res.redirect(301, '/#login/choose-tenant');
  850 + });
  851 + } else {
  852 + req.session.passport = passport;
  853 + req.session.save(function (err) {
  854 + res.redirect(301, '/#container/home'); //登陆成功跳转首页
  855 + });
  856 + }
  857 + });
  858 + }
  859 +
  860 + }
  861 +
  862 + function getTastLink(req, res, next) {
  863 + var url = crypto.createHash('md5').update(req.body.id).digest('hex');
  864 + if (settings.prefix && settings.prefix.length > 1) {
  865 + res.send(req.protocol + '://' + req.get('host') + settings.prefix.substring(0, settings.prefix.length - 1) + "/socialwork/freedom-jobs/emps/" + req.body.id + "/" + url);
  866 + } else {
  867 + res.send({ 'url': req.protocol + '://' + req.get('host') + "/socialwork/freedom-jobs/emps/" + req.body.id + "/" + url });
  868 + }
  869 + }
  870 +
  871 + function freedomJobsEmp(req, res, next) {
  872 + var id = req.params.id;
  873 + var verification = req.params.verification;
  874 + var url = crypto.createHash('md5').update(id).digest('hex');
  875 + if (verification != url) {//验证未通过
  876 + if (settings.prefix && settings.prefix.length > 1) {
  877 + res.redirect(settings.prefix.substring(0, settings.prefix.length - 1));
  878 + } else {
  879 + res.redirect('/');
  880 + }
  881 + } else {//验证通过跳转,获取token存到session里
  882 + var passport = {
  883 + user: {
  884 + refreshToken: "",
  885 + token: "",
  886 + service_catalog: {},
  887 + user_info: {},
  888 + err: null
  889 + }
  890 + };
  891 + var tempParams = {
  892 + "grant_type": "client_credential",
  893 + "client_id": "340161778618994688",//多宝鱼环境
  894 + "client_secret": "0f8c30aa3d15332652f62c3eaf22fdea"
  895 + };
  896 + rest.restful.postJson(settings.restful.url + 'uaa/v1/auth/tokens', tempParams, {
  897 + headers: { 'Content-Type': 'application/json', "Accept": "application/json" }
  898 + }).on('success', function (data, response) {
  899 + if (data.access_token) {
  900 + var scopes = data.scope.split(",");
  901 + passport.user.token = data.access_token;
  902 + passport.user.refreshToken = data.refresh_token;
  903 + passport.user.user_info = data.user;
  904 + passport.user.tenant_info = data.tenant;
  905 + passport.user.customer_info = data.customer;
  906 + passport.user.user_info.perms = data.perms;
  907 + passport.user.type = data.user.type;
  908 + passport.user.real_auth_status = data.user.real_auth_status;
  909 + passport.user.credential_status = data.user.credential_status;
  910 + passport.user.user_info.scope = scopes[0];
  911 + req.session.passport = passport;
  912 + req.session.save(function (err) {
  913 + if (settings.prefix && settings.prefix.length > 1) {
  914 + res.redirect(301, settings.prefix.substring(0, settings.prefix.length - 1) + '/#task_assign/' + id);
  915 + } else {
  916 + res.redirect(301, '/#task_assign/' + id);
  917 + }
  918 + });
  919 + } else {
  920 + var err = new Error('Third login err');
  921 + passport.user.err = data.message;
  922 + }
  923 + }).on('error', function (err, response) {
  924 + logger.error("Third login error", err);
  925 + var err = new Error('Third login err');
  926 + callback(err, response);
  927 + }).on('fail', function (data, response) {
  928 + logger.error("Third login fail", data);
  929 + var err = new Error('Third login err');
  930 + });
  931 + }
  932 +
698 933 }
699 934
700 935 return {
701   - index:index,
702   - register:register,
703   - signIn:signIn,
704   - doLogin:doLogin,
705   - signOut:signOut,
706   - smsCodes:smsCodes,
707   - tenants:tenants,
708   - productDes:productDes,
709   - resetPass:resetPass,
710   - updatePassword:updatePassword,
711   - loadUserInfo:loadUserInfo,
712   - getUploaderToken:getUploaderToken,
  936 + index: index,
  937 + indexPrefix,
  938 + register: register,
  939 + signIn: signIn,
  940 + doLogin: doLogin,
  941 + signOut: signOut,
  942 + smsCodes: smsCodes,
  943 + tenants: tenants,
  944 + productDes: productDes,
  945 + resetPass: resetPass,
  946 + updatePassword: updatePassword,
  947 + loadUserInfo: loadUserInfo,
  948 + getUploaderToken: getUploaderToken,
713 949 getObjectTokenByID,
714   - delOSSObject:delOSSObject,
  950 + delOSSObject: delOSSObject,
715 951 healthMonitor,
716 952 smsVerification,
717 953 updateUserRoles,
... ... @@ -736,9 +972,12 @@ exports=module.exports=function(logger,rest,settings){
736 972 getCustomerQrcode,
737 973 getPositionQrcode,
738 974 getOSSConfig,
739   - weidianTempLate
  975 + weidianTempLate,
  976 + workaiSecurityOAuth,
  977 + getTastLink,
  978 + freedomJobsEmp
740 979 };
741 980 };
742 981
743   -exports['@singleton']=true;
744   -exports['@require']=['igloo/logger','utils/rest','igloo/settings'];
  982 +exports['@singleton'] = true;
  983 +exports['@require'] = ['igloo/logger', 'utils/rest', 'igloo/settings'];
... ...
1   -var urlencode = require('urlencode');
2   -var passport = require('passport');
3   -
4   -exports=module.exports=function(logger,rest,settings){
5   - function encodeUrl(url){
6   - return urlencode(url);
7   - }
8   -
9   - function encodePamars(params){
10   - var temp=[];
11   - for(var i=0;i<params.length;i++){
12   - var param=params[i];
13   - var tempParam=param.split("=")
14   - tempParam[1]=urlencode.decode(tempParam[1], 'utf8');
15   - tempParam[1]=tempParam[1].replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
16   - console.log(tempParam[1]);
17   - if(i<(params.length-1)){
18   - if(/[:&+/?%#=]/g.test(tempParam[1])){
19   - temp.push(tempParam[0]+"="+encodeUrl(tempParam[1])+"&");
20   - }else{
21   - temp.push(tempParam[0]+"="+tempParam[1]+"&");
22   - }
23   - }else{
24   - if(/[:&+/?%#=]/g.test(tempParam[1])){
25   - temp.push(tempParam[0]+"="+encodeUrl(tempParam[1]));
26   - }else{
27   - temp.push(tempParam[0]+"="+tempParam[1]);
28   - }
29   - }
30   - }
31   - return temp.join("");
32   - }
33   -
34   - function handlePamars(url){
35   - var tempUrl=url;
36   - // if(url.indexOf("?")!=-1){
37   - // var temp=url.split("?");
38   - // var params="";
39   - // if(temp[1]&&temp[1].indexOf("&")!=-1){
40   - // params=encodePamars(temp[1].split("&"));
41   - // }else{
42   - // params=encodePamars([temp[1]]);
43   - // }
44   - // return temp[0]+"?"+params;
45   - // }else {
46   - // return tempUrl;
47   - // }
48   - return tempUrl;
49   - }
50   -
51   - function splitServiceFromUrl(url){
52   - var catalog=url.substring(1,url.indexOf('/',1));
53   - var pathUrl=url.substring(url.indexOf('/',1));
54   - var fullPath=settings.restful.url+catalog+settings.restful.version+pathUrl;
55   - return fullPath
56   - }
57   -
58   - function splitUrl(fullUrl){
59   - var url=fullUrl.substring(9);
60   - return url;
61   - }
62   -
63   - function searchService(services,name){
64   - if(services[name]){
65   - console.log(services[name]);
66   - return false;
67   - }else{
68   - return true;
69   - }
70   - }
71   -
72   - function checkReq(req,res){
73   - var flag=true;
74   - // if(flag&&req.headers&&!req.headers['service-catalog']){
75   - // res.status(400);
76   - // res.send({"errors":{},"message":"缺少必要请求参数,服务目录名称是必填项"});
77   - // flag=false;
78   - // }
79   - // if(flag&&req.session.passport&&req.session.passport.user&&!req.session.passport.user.service_catalog){
80   - // res.status(404);
81   - // res.send({"errors":{},"message":"服务目录未加载,请重新登录"});
82   - // flag=false;
83   - // }
84   - // if(flag&&searchService(req.session.passport.user.service_catalog,req.headers['service-catalog'])){
85   - // res.status(404);
86   - // res.send({"errors":{},"message":"服务目录未查询到请求服务,请确认参数正确"});
87   - // flag=false;
88   - // }
89   - return flag;
90   - }
91   -
92   - function checkJson(req){
93   - if(req.headers&&req.headers['content-type']=='application/json'){
94   - return true;
95   - }else{
96   - return false;
97   - }
98   - }
99   -
100   - function get(req,res,next){
101   - var url=splitUrl(req.originalUrl);
102   - url=handlePamars(url);
103   - url=splitServiceFromUrl(url);
104   - if(checkReq(req,res)){
105   - var options={
106   - 'service_catalog':'',
107   - 'url': url,
108   - 'useUrl':true,
109   - 'params':req.body,
110   - 'callback':_cb,
111   - 'req':req,
112   - 'res':res,
113   - 'options':{},
114   - 'excludeToken':true
115   - };
116   - // if(checkJson(req)){
117   - // rest.json(options);
118   - // }else{
119   - // rest.get(options);
120   - // }
121   - rest.get(options);
122   - }
123   - function _cb(data,response){
124   - logger.info('back data:',data);
125   - if(response.statusCode<300&&!data){
126   - res.send({
127   - code:200,
128   - message:'操作成功!'
129   - });
130   - }else {
131   - res.send(data);
132   - }
133   - }
134   - }
135   -
136   - function post(req,res,next){
137   - var url=splitUrl(req.originalUrl);
138   - url=splitServiceFromUrl(url);
139   - if(checkReq(req,res)){
140   - var options={
141   - 'service_catalog':'',
142   - 'url': url,
143   - 'useUrl':true,
144   - 'params':req.body,
145   - 'callback':_cb,
146   - 'req':req,
147   - 'res':res,
148   - 'options':{},
149   - 'excludeToken':true
150   - };
151   - if(checkJson(req)){
152   - rest.postJson(options);
153   - }else{
154   - rest.post(options);
155   - }
156   - }
157   - function _cb(data,response){
158   - logger.info('back data:',data);
159   - if(response.statusCode<300&&!data){
160   - res.send({
161   - code:200,
162   - message:'操作成功!'
163   - });
164   - }else{
165   - res.send(data);
166   - }
167   - }
168   - }
169   -
170   - function put(req,res,next){
171   - var url=splitUrl(req.originalUrl);
172   - url=splitServiceFromUrl(url);
173   - if(checkReq(req,res)){
174   - var options={
175   - 'service_catalog':'',
176   - 'url':url,
177   - 'useUrl':true,
178   - 'params':req.body,
179   - 'callback':_cb,
180   - 'req':req,
181   - 'res':res,
182   - 'options':{},
183   - 'excludeToken':true
184   - };
185   - if(checkJson(req)){
186   - rest.putJson(options);
187   - }else{
188   - rest.put(options);
189   - }
190   - }
191   - function _cb(data,response){
192   - logger.info('back data:',data);
193   - if(response.statusCode<300&&!data){
194   - res.send({
195   - code:200,
196   - message:'操作成功!'
197   - });
198   - }else{
199   - res.send(data);
200   - }
201   - }
202   - }
203   -
204   - function patch(req,res,next){
205   - var url=splitUrl(req.originalUrl);
206   - url=splitServiceFromUrl(url);
207   - if(checkReq(req,res)){
208   - var options={
209   - 'service_catalog':'',
210   - 'url': url,
211   - 'useUrl':true,
212   - 'params':req.body,
213   - 'callback':_cb,
214   - 'req':req,
215   - 'res':res,
216   - 'options':{},
217   - 'excludeToken':true
218   - };
219   - if(checkJson(req)){
220   - rest.patchJson(options);
221   - }else{
222   - rest.patch(options);
223   - }
224   - }
225   - function _cb(data,response){
226   - logger.info('back data:',data);
227   - res.send(data);
228   - }
229   - }
230   -
231   - function head(req,res,next){
232   - var url=splitUrl(req.originalUrl);
233   - url=splitServiceFromUrl(url);
234   - if(checkReq(req,res)){
235   - var options={
236   - 'service_catalog':'',
237   - 'url': url,
238   - 'useUrl':true,
239   - 'params':req.body,
240   - 'callback':_cb,
241   - 'req':req,
242   - 'res':res,
243   - 'options':{},
244   - 'excludeToken':true
245   - };
246   - rest.get(options);
247   - }
248   - function _cb(data,response){
249   - logger.info('back data:',data);
250   - res.send(data);
251   - }
252   - }
253   -
254   - function del(req,res,next){
255   - var url=splitUrl(req.originalUrl);
256   - url=splitServiceFromUrl(url);
257   - if(checkReq(req,res)){
258   - var options={
259   - 'service_catalog':'',
260   - 'url': url,
261   - 'useUrl':true,
262   - 'params':req.body,
263   - 'callback':_cb,
264   - 'req':req,
265   - 'res':res,
266   - 'options':{},
267   - 'excludeToken':true
268   - };
269   - rest.del(options);
270   - }
271   - function _cb(data,response){
272   - logger.info('back data:',data);
273   - if(response.statusCode<300){
274   - res.send({'action':'delete',"message":"删除成功"});
275   - }else{
276   - res.send(data);
277   - }
278   - }
279   - }
280   -
281   - function doLogin(req,res,next){
282   - passport.authenticate('local', function(err, user, info) {
283   - if (err) { return next(err); }
284   - if (!user) { return res.send({'error':'用户名或密码错误!'}); }
285   - req.logIn(user, function(err) {
286   - if (err) { return next(err); }
287   - return res.send({'ok':'登录成功',user_info:req.session.passport.user.user_info});
288   - });
289   - })(req, res, next);
290   - }
291   -
292   - return {
293   - 'get':get,
294   - 'post':post,
295   - 'put':put,
296   - 'patch':patch,
297   - 'head':head,
298   - 'delete':del
299   - };
300   -};
301   -
302   -exports['@singleton']=true;
303   -exports['@require']=['igloo/logger','utils/rest','igloo/settings'];
1   -var urlencode = require('urlencode');
2   -exports=module.exports=function(logger,rest,settings){
3   - function encodeUrl(url){
4   - return urlencode(url);
5   - }
6   -
7   - function encodePamars(params){
8   - var temp=[];
9   - for(var i=0;i<params.length;i++){
10   - var param=params[i];
11   - var tempParam=param.split("=")
12   - tempParam[1]=urlencode.decode(tempParam[1], 'utf8');
13   - tempParam[1]=tempParam[1].replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
14   - console.log(tempParam[1]);
15   - if(i<(params.length-1)){
16   - if(/[:&+/?%#=]/g.test(tempParam[1])){
17   - temp.push(tempParam[0]+"="+encodeUrl(tempParam[1])+"&");
18   - }else{
19   - temp.push(tempParam[0]+"="+tempParam[1]+"&");
20   - }
21   - }else{
22   - if(/[:&+/?%#=]/g.test(tempParam[1])){
23   - temp.push(tempParam[0]+"="+encodeUrl(tempParam[1]));
24   - }else{
25   - temp.push(tempParam[0]+"="+tempParam[1]);
26   - }
27   - }
28   - }
29   - return temp.join("");
30   - }
31   -
32   - function handlePamars(url){
33   - var tempUrl=url;
34   - // if(url.indexOf("?")!=-1){
35   - // var temp=url.split("?");
36   - // var params="";
37   - // if(temp[1]&&temp[1].indexOf("&")!=-1){
38   - // params=encodePamars(temp[1].split("&"));
39   - // }else{
40   - // params=encodePamars([temp[1]]);
41   - // }
42   - // return temp[0]+"?"+params;
43   - // }else {
44   - // return tempUrl;
45   - // }
46   - return tempUrl;
47   - }
48   -
49   - function splitServiceFromUrl(url){
50   - var catalog=url.substring(1,url.indexOf('/',1));
51   - var pathUrl=url.substring(url.indexOf('/',1));
52   - var fullPath=settings.restful.url+catalog+settings.restful.version+pathUrl;
53   - if(pathUrl&&pathUrl.indexOf('inits')!=-1){
54   - fullPath=settings.restful.url+catalog+'/v2'+pathUrl;
55   - }
56   - return fullPath
57   - }
58   -
59   - function splitUrl(fullUrl){
60   - var url=fullUrl.substring(9);
61   - return url;
62   - }
63   -
64   - function searchService(services,name){
65   - if(services[name]){
66   - console.log(services[name]);
67   - return false;
68   - }else{
69   - return true;
70   - }
71   - }
72   -
73   - function checkReq(req,res){
74   - var flag=true;
75   - // if(flag&&req.headers&&!req.headers['service-catalog']){
76   - // res.status(400);
77   - // res.send({"errors":{},"message":"缺少必要请求参数,服务目录名称是必填项"});
78   - // flag=false;
79   - // }
80   - // if(flag&&req.session.passport&&req.session.passport.user&&!req.session.passport.user.service_catalog){
81   - // res.status(404);
82   - // res.send({"errors":{},"message":"服务目录未加载,请重新登录"});
83   - // flag=false;
84   - // }
85   - // if(flag&&searchService(req.session.passport.user.service_catalog,req.headers['service-catalog'])){
86   - // res.status(404);
87   - // res.send({"errors":{},"message":"服务目录未查询到请求服务,请确认参数正确"});
88   - // flag=false;
89   - // }
90   - return flag;
91   - }
92   -
93   - function checkJson(req){
94   - if(req.headers&&req.headers['content-type']=='application/json'){
95   - return true;
96   - }else{
97   - return false;
98   - }
99   - }
100   -
101   - function get(req,res,next){
102   - var url=splitUrl(req.originalUrl);
103   - url=handlePamars(url);
104   - url=splitServiceFromUrl(url);
105   - if(checkReq(req,res)){
106   - var options={
107   - 'service_catalog':'',
108   - 'url':url,
109   - 'useUrl':true,
110   - 'params':req.body,
111   - 'callback':_cb,
112   - 'req':req,
113   - 'res':res,
114   - 'options':{}
115   - };
116   - rest.get(options);
117   - }
118   - function _cb(data,response){
119   - logger.info('back data:',data);
120   - if(response.statusCode<300&&!data){
121   - res.send({
122   - code:200,
123   - message:'操作成功!'
124   - });
125   - }else {
126   - res.send(data);
127   - }
128   - }
129   - }
130   -
131   - function post(req,res,next){
132   - var url=splitUrl(req.originalUrl);
133   - url=splitServiceFromUrl(url);
134   - if(checkReq(req,res)){
135   - var options={
136   - 'service_catalog':'services[catalog].public_endpoint',
137   - 'url':url,
138   - 'useUrl':true,
139   - 'params':req.body,
140   - 'callback':_cb,
141   - 'req':req,
142   - 'res':res,
143   - 'options':{}
144   - };
145   - if(checkJson(req)){
146   - rest.postJson(options);
147   - }else{
148   - rest.post(options);
149   - }
150   - }
151   - function _cb(data,response){
152   - logger.info('back data:',data);
153   - if(response.statusCode<300&&!data){
154   - res.send({
155   - code:200,
156   - message:'操作成功!'
157   - });
158   - }else{
159   - res.send(data);
160   - }
161   - }
162   - }
163   -
164   - function put(req,res,next){
165   - var url=splitUrl(req.originalUrl);
166   - url=splitServiceFromUrl(url);
167   - if(checkReq(req,res)){
168   - var options={
169   - 'service_catalog':'services[catalog].public_endpoint',
170   - 'url': url,
171   - 'useUrl':true,
172   - 'params':req.body,
173   - 'callback':_cb,
174   - 'req':req,
175   - 'res':res,
176   - 'options':{}
177   - };
178   - if(checkJson(req)){
179   - rest.putJson(options);
180   - }else{
181   - rest.put(options);
182   - }
183   - }
184   - function _cb(data,response){
185   - logger.info('back data:',data);
186   - if(response.statusCode<300&&!data){
187   - res.send({
188   - code:200,
189   - message:'操作成功!'
190   - });
191   - }else{
192   - res.send(data);
193   - }
194   - }
195   - }
196   -
197   - function patch(req,res,next){
198   - var url=splitUrl(req.originalUrl);
199   - url=splitServiceFromUrl(url);
200   - if(checkReq(req,res)){
201   - var options={
202   - 'service_catalog':'services[catalog].public_endpoint',
203   - 'url': url,
204   - 'useUrl':true,
205   - 'params':req.body,
206   - 'callback':_cb,
207   - 'req':req,
208   - 'res':res,
209   - 'options':{}
210   - };
211   - if(checkJson(req)){
212   - rest.patchJson(options);
213   - }else{
214   - rest.patch(options);
215   - }
216   - }
217   - function _cb(data,response){
218   - logger.info('back data:',data);
219   - res.send(data);
220   - }
221   - }
222   -
223   - function head(req,res,next){
224   - var url=splitUrl(req.originalUrl);
225   - url=splitServiceFromUrl(url);
226   - if(checkReq(req,res)){
227   - var options={
228   - 'service_catalog':'services[catalog].public_endpoint',
229   - 'url': url,
230   - 'useUrl':true,
231   - 'params':req.body,
232   - 'callback':_cb,
233   - 'req':req,
234   - 'res':res,
235   - 'options':{}
236   - };
237   - rest.get(options);
238   - }
239   - function _cb(data,response){
240   - logger.info('back data:',data);
241   - res.send(data);
242   - }
243   - }
244   -
245   - function del(req,res,next){
246   - var url=splitUrl(req.originalUrl);
247   - url=splitServiceFromUrl(url);
248   - if(checkReq(req,res)){
249   - var options={
250   - 'service_catalog':'services[catalog].public_endpoint',
251   - 'url': url,
252   - 'useUrl':true,
253   - 'params':req.body,
254   - 'callback':_cb,
255   - 'req':req,
256   - 'res':res,
257   - 'options':{}
258   - };
259   - rest.del(options);
260   - }
261   - function _cb(data,response){
262   - logger.info('back data:',data);
263   - if(response.statusCode<300){
264   - res.send({'action':'delete',"message":"删除成功"});
265   - }else{
266   - res.send(data);
267   - }
268   - }
269   - }
270   -
271   - return {
272   - 'get':get,
273   - 'post':post,
274   - 'put':put,
275   - 'patch':patch,
276   - 'head':head,
277   - 'delete':del
278   - };
279   -};
280   -
281   -exports['@singleton']=true;
282   -exports['@require']=['igloo/logger','utils/rest','igloo/settings'];
1   -var urlencode = require('urlencode');
2   -var mockData = require('../json/mockDate.json');
3   -exports=module.exports=function(logger,rest,settings){
4   -
5   - function getJson(url,method){
6   - var backData={};
7   - for(var i=0;i<mockData.length;i++){
8   - var urlRegex=new RegExp(mockData[i].url,'g');
9   - if(urlRegex.test(url)){
10   - backData=mockData[i][method+'_data'];
11   - return backData;
12   - }
13   - }
14   - return backData;
15   - }
16   -
17   - function get(req,res,next){
18   - console.log(req.path);
19   - res.send(getJson(req.path,'get'));
20   - }
21   -
22   - function post(req,res,next){
23   - console.log(req.path);
24   - res.send(getJson(req.path,'post'));
25   - }
26   -
27   - function put(req,res,next){
28   - console.log(req.path);
29   - res.send(getJson(req.path,'put'));
30   - }
31   -
32   - function patch(req,res,next){
33   - console.log(req.path);
34   - res.send(getJson(req.path,'patch'));
35   - }
36   -
37   - function head(req,res,next){
38   - console.log(req.path);
39   - res.send(getJson(req.path,'head'));
40   - }
41   -
42   - function del(req,res,next){
43   - console.log(req.path);
44   - res.send(getJson(req.path,'del'));
45   - }
46   -
47   - return {
48   - 'get':get,
49   - 'post':post,
50   - 'put':put,
51   - 'patch':patch,
52   - 'head':head,
53   - 'delete':del
54   - };
55   -};
56   -
57   -exports['@singleton']=true;
58   -exports['@require']=['igloo/logger','utils/rest','igloo/settings'];
1   -var urlencode= require('urlencode');
2   -
3   -exports=module.exports=function(logger,rest,settings){
4   - var api_service_endpoint = 'http://47.98.198.227:59000/v1';
5   -
6   - function index(req,res,next){
7   - logger.info(req.user);
8   - res.render('robotMobile',{title:'外呼机器人'});
9   - }
10   -
11   - function splitUrl(fullUrl){
12   - var url=fullUrl.substring(9);
13   - return url;
14   - }
15   -
16   - function get(req,res,next){
17   - var url=splitUrl(req.originalUrl);
18   - rest.get({
19   - 'baseUrl':'url',
20   - 'url':api_service_endpoint+url,
21   - 'useUrl':true,
22   - 'params':req.body,
23   - 'callback':_cb,
24   - 'req':req,
25   - 'res':res,
26   - 'options':{},
27   - 'excludeToken':true
28   - });
29   - function _cb(data,response){
30   - console.log(data);
31   - res.send(data);
32   - }
33   - // res.send({
34   - // "total_count":20,
35   - // "items":[{
36   - // "id":'001',
37   - // "call_out_number":'18501068035',
38   - // "call_out_time":2022222,
39   - // "status":"4",
40   - // "record_url":'xxxx'
41   - // }]
42   - // })
43   - }
44   -
45   - function post(req,res,next){
46   - var url=splitUrl(req.originalUrl);
47   - rest.postJson({
48   - 'baseUrl':'url',
49   - 'url':api_service_endpoint+url,
50   - 'useUrl':true,
51   - 'params':req.body,
52   - 'callback':_cb,
53   - 'req':req,
54   - 'res':res,
55   - 'options':{},
56   - 'excludeToken':true
57   - });
58   - function _cb(data,response){
59   - console.log(data);
60   - res.send(data);
61   - }
62   - }
63   -
64   - function put(req,res,next){
65   - var url=splitUrl(req.originalUrl);
66   - rest.putJson({
67   - 'baseUrl':'url',
68   - 'url':api_service_endpoint+url,
69   - 'useUrl':true,
70   - 'params':req.body,
71   - 'callback':_cb,
72   - 'req':req,
73   - 'res':res,
74   - 'options':{},
75   - 'excludeToken':true
76   - });
77   - function _cb(data,response){
78   - res.send(data);
79   - }
80   - }
81   -
82   - function patch(req,res,next){
83   - var url=splitUrl(req.originalUrl);
84   - rest.patchJson({
85   - 'baseUrl':'url',
86   - 'url':api_service_endpoint+url,
87   - 'useUrl':true,
88   - 'params':req.body,
89   - 'callback':_cb,
90   - 'req':req,
91   - 'res':res,
92   - 'options':{},
93   - 'excludeToken':true
94   - });
95   - function _cb(data,response){
96   - res.send(data);
97   - }
98   - }
99   -
100   - function head(req,res,next){
101   - var url=splitUrl(req.originalUrl);
102   - rest.get({
103   - 'baseUrl':'url',
104   - 'url':api_service_endpoint+url,
105   - 'useUrl':true,
106   - 'params':req.body,
107   - 'callback':_cb,
108   - 'req':req,
109   - 'res':res,
110   - 'options':{},
111   - 'excludeToken':true
112   - });
113   - function _cb(data,response){
114   - res.send(data);
115   - }
116   - }
117   -
118   - function del(req,res,next){
119   - var url=splitUrl(req.originalUrl);
120   - rest.del({
121   - 'baseUrl':'url',
122   - 'url':api_service_endpoint+url,
123   - 'useUrl':true,
124   - 'params':req.body,
125   - 'callback':_cb,
126   - 'req':req,
127   - 'res':res,
128   - 'options':{},
129   - 'excludeToken':true
130   - });
131   - function _cb(data,response){
132   - res.send(data);
133   - }
134   - }
135   -
136   - return {
137   - 'index':index,
138   - 'get':get,
139   - 'post':post,
140   - 'put':put,
141   - 'patch':patch,
142   - 'head':head,
143   - 'delete':del
144   - };
145   -};
146   -
147   -exports['@singleton']=true;
148   -exports['@require']=['igloo/logger','utils/rest','igloo/settings'];
1   -var express = require('express');
  1 +var express = require('express');
2 2
3   -exports = module.exports = function(IoC,policies){
  3 +exports = module.exports = function (IoC, policies, settings) {
4 4 var app = this;
5   - var router= express.Router();
6   - var controller = IoC.create('controllers/api');
7   -
  5 + var router = express.Router();
  6 + var controller = IoC.create('controllers/api');
  7 +
8 8 router.get(
9 9 '/*',
10 10 policies.ensureLoggedOut(),
... ... @@ -15,13 +15,13 @@ exports = module.exports = function(IoC,policies){
15 15 '/*',
16 16 policies.ensureLoggedOut(),
17 17 controller.post
18   - );
  18 + );
19 19
20 20 router.put(
21 21 '/*',
22 22 policies.ensureLoggedOut(),
23 23 controller.put
24   - );
  24 + );
25 25
26 26 router.patch(
27 27 '/*',
... ... @@ -34,15 +34,15 @@ exports = module.exports = function(IoC,policies){
34 34 policies.ensureLoggedOut(),
35 35 controller.head
36 36 );
37   -
  37 +
38 38 router.delete(
39 39 '/*',
40 40 policies.ensureLoggedOut(),
41 41 controller.delete
42   - );
  42 + );
43 43
44   - app.use('/api', router);
  44 + app.use(settings.prefix + 'api', router);
45 45 };
46 46
47   -exports['@require']=['$container','policies'];
48   -exports['@singleton']=true;
  47 +exports['@require'] = ['$container', 'policies', 'igloo/settings'];
  48 +exports['@singleton'] = true;
... ...
1 1 var express = require('express');
2 2 var payRoll = require('../json/payRoll.json');
3 3
4   -exports = module.exports = function (IoC, policies) {
  4 +exports = module.exports = function (IoC, policies, settings) {
5 5 var app = this;
6 6 var router = express.Router();
  7 + var router2 = express.Router();
7 8 var controller = IoC.create('controllers/auth');
8   - router.get(
  9 + if (settings.prefix.length > 0) {
  10 + router.get(
  11 + '/',
  12 + controller.index
  13 + );
  14 + router.get(
  15 + '/signOut',
  16 + controller.signOut
  17 + );
  18 + }
  19 +
  20 + router2.get(
9 21 '/',
10   - controller.index
  22 + controller.indexPrefix
11 23 );
  24 +
12 25 router.get(
13 26 '/productDes',
14 27 controller.productDes
... ... @@ -39,7 +52,8 @@ exports = module.exports = function (IoC, policies) {
39 52 controller.doLogin
40 53 );
41 54
42   - router.get(
  55 +
  56 + router2.get(
43 57 '/signOut',
44 58 controller.signOut
45 59 );
... ... @@ -198,6 +212,12 @@ exports = module.exports = function (IoC, policies) {
198 212 controller.listChannels
199 213 );
200 214
  215 + router.post(
  216 + '/getTastLink',
  217 + policies.ensureLoggedOut(),
  218 + controller.getTastLink
  219 + );
  220 +
201 221 router.get(
202 222 '/filemeta',
203 223 policies.ensureLoggedOut(),
... ... @@ -220,8 +240,23 @@ exports = module.exports = function (IoC, policies) {
220 240 controller.weidianTempLate
221 241 );
222 242
223   - app.use('/', router);
  243 + router.get(
  244 + '/wso-workai',
  245 + controller.workaiSecurityOAuth
  246 + );
  247 +
  248 + router.get(
  249 + '/socialwork/freedom-jobs/emps/:id/:verification',
  250 + controller.freedomJobsEmp
  251 + );
  252 +
  253 + settings.prefix.length > 1 ?
  254 + app.use(settings.prefix.substring(0, settings.prefix.length - 1), router) :
  255 + app.use('/', router);
  256 +
  257 +
  258 + app.use('/', router2);
224 259 };
225 260
226   -exports['@require'] = ['$container', 'policies'];
  261 +exports['@require'] = ['$container', 'policies', 'igloo/settings'];
227 262 exports['@singleton'] = true;
... ...
1   -var express = require('express');
2   -
3   -exports = module.exports = function(IoC,policies){
4   - var app = this;
5   - var router= express.Router();
6   - var controller = IoC.create('controllers/authed');
7   -
8   - router.get(
9   - '/*',
10   - controller.get
11   - );
12   -
13   - router.post(
14   - '/*',
15   - controller.post
16   - );
17   -
18   - router.put(
19   - '/*',
20   - controller.put
21   - );
22   -
23   - router.patch(
24   - '/*',
25   - controller.patch
26   - );
27   -
28   - router.head(
29   - '/*',
30   - controller.head
31   - );
32   -
33   - router.delete(
34   - '/*',
35   - controller.delete
36   - );
37   -
38   - app.use('/auth_api', router);
39   -};
40   -
41   -exports['@require']=['$container','policies'];
42   -exports['@singleton']=true;
... ... @@ -3,34 +3,23 @@
3 3
4 4 var bootable = require('bootable');
5 5
6   -exports = module.exports = function(IoC, settings) {
  6 +exports = module.exports = function (IoC, settings) {
7 7
8   - var app = this;
9   -
10   - //auth
11   - app.phase(bootable.di.routes('./routes/auth.js'));
12   -
13   - //mock
14   - app.phase(bootable.di.routes('./routes/mock.js'));
15   - //authed
  8 + var app = this;
16 9
17   - app.phase(bootable.di.routes('./routes/authed.js'));
  10 + //auth
  11 + app.phase(bootable.di.routes('./routes/auth.js'));
18 12
19 13 //api
20 14 app.phase(bootable.di.routes('./routes/api.js'));
21 15
22   - //file
23   - app.phase(bootable.di.routes('./routes/file.js'));
24   -
25   - //robot
26   - app.phase(bootable.di.routes('./routes/robot.js'));
27 16
28 17 // error handler (always keep this last)
29   - app.phase(function() {
  18 + app.phase(function () {
30 19 var errorHandler = IoC.create('igloo/error-handler');
31 20 app.use(errorHandler);
32 21 });
33 22
34 23 };
35 24
36   -exports['@require'] = [ '$container', 'igloo/settings' ];
  25 +exports['@require'] = ['$container', 'igloo/settings'];
... ...
1   -var express = require('express');
2   -
3   -exports = module.exports = function(IoC,policies){
4   - var app = this;
5   - var router= express.Router();
6   - var controller = IoC.create('controllers/file');
7   -
8   - router.get(
9   - '/*',
10   - controller.get
11   - );
12   -
13   - router.post(
14   - '/*',
15   - controller.post
16   - );
17   -
18   - router.put(
19   - '/*',
20   - controller.put
21   - );
22   -
23   - router.patch(
24   - '/*',
25   - controller.patch
26   - );
27   -
28   - router.head(
29   - '/*',
30   - controller.head
31   - );
32   -
33   - router.delete(
34   - '/*',
35   - controller.delete
36   - );
37   -
38   - app.use('/file_api', router);
39   -};
40   -
41   -exports['@require']=['$container','policies'];
42   -exports['@singleton']=true;
1   -var express = require('express');
2   -
3   -exports = module.exports = function(IoC,policies){
4   - var app = this;
5   - var router= express.Router();
6   - var controller = IoC.create('controllers/mock');
7   -
8   - router.get(
9   - '/*',
10   - policies.ensureLoggedOut(),
11   - controller.get
12   - );
13   -
14   - router.post(
15   - '/*',
16   - policies.ensureLoggedOut(),
17   - controller.post
18   - );
19   -
20   - router.put(
21   - '/*',
22   - policies.ensureLoggedOut(),
23   - controller.put
24   - );
25   -
26   - router.patch(
27   - '/*',
28   - policies.ensureLoggedOut(),
29   - controller.patch
30   - );
31   -
32   - router.head(
33   - '/*',
34   - policies.ensureLoggedOut(),
35   - controller.head
36   - );
37   -
38   - router.delete(
39   - '/*',
40   - policies.ensureLoggedOut(),
41   - controller.delete
42   - );
43   -
44   - app.use('/mock/api', router);
45   -};
46   -
47   -exports['@require']=['$container','policies'];
48   -exports['@singleton']=true;
1   -var express = require('express');
2   -
3   -exports = module.exports = function(IoC,policies){
4   - var app = this;
5   - var router= express.Router();
6   - var controller = IoC.create('controllers/robot');
7   - router.get(
8   - '/robot',
9   - controller.index
10   - );
11   -
12   - router.get(
13   - '/api/*',
14   - controller.get
15   - );
16   -
17   - router.post(
18   - '/api/*',
19   - controller.post
20   - );
21   -
22   - router.put(
23   - '/api/*',
24   - controller.put
25   - );
26   -
27   - router.patch(
28   - '/api/*',
29   - controller.patch
30   - );
31   -
32   - router.head(
33   - '/api/*',
34   - controller.head
35   - );
36   -
37   - router.delete(
38   - '/api/*',
39   - controller.delete
40   - );
41   -
42   - app.use('/demo', router);
43   -};
44   -
45   -exports['@require']=['$container','policies'];
46   -exports['@singleton']=true;
1 1 <!DOCTYPE html>
2 2 <html>
3   - <head>
4   - <title>企云在线</title>
5   - <% include utils.ejs %>
6   - <style type="text/css">
7   - .pt-page {
8   - width: 100%;
9   - height: 100%;
10   - position: absolute;
11   - top: 0;
12   - left: 0;
13   - visibility: hidden;
14   - overflow: hidden;
15   - -webkit-backface-visibility: hidden;
16   - -moz-backface-visibility: hidden;
17   - backface-visibility: hidden;
18   - -webkit-transform: translate3d(0, 0, 0);
19   - -moz-transform: translate3d(0, 0, 0);
20   - transform: translate3d(0, 0, 0);
21   - -webkit-transform-style: preserve-3d;
22   - -moz-transform-style: preserve-3d;
23   - transform-style: preserve-3d;
24   - }
25   - .pt-page-current,
26   - .no-js .pt-page {
27   - visibility: visible;
28   - z-index: 1;
29   - }
30   - </style>
31   - </head>
32   - <body class="home-hr">
33   - <div class="menu-hr ">
34   - <div class="menu-hr-wrap">
35   - <div class="login-user" id="login-user-menu">
36   - <img class="user-photo" src="imgs/touxiang.jpg" alt="头像" />
37   - <h3>登录用户</h3>
38   - <span class="login-user-name">fanwh</span>
39   - </div>
  3 +
  4 +<head>
  5 + <title>企云在线</title>
  6 + <% include utils.ejs %>
  7 + <style type="text/css">
  8 + .pt-page {
  9 + width: 100%;
  10 + height: 100%;
  11 + position: absolute;
  12 + top: 0;
  13 + left: 0;
  14 + visibility: hidden;
  15 + overflow: hidden;
  16 + -webkit-backface-visibility: hidden;
  17 + -moz-backface-visibility: hidden;
  18 + backface-visibility: hidden;
  19 + -webkit-transform: translate3d(0, 0, 0);
  20 + -moz-transform: translate3d(0, 0, 0);
  21 + transform: translate3d(0, 0, 0);
  22 + -webkit-transform-style: preserve-3d;
  23 + -moz-transform-style: preserve-3d;
  24 + transform-style: preserve-3d;
  25 + }
  26 +
  27 + .pt-page-current,
  28 + .no-js .pt-page {
  29 + visibility: visible;
  30 + z-index: 1;
  31 + }
  32 + </style>
  33 +</head>
  34 +
  35 +<body class="home-hr">
  36 + <div class="menu-hr ">
  37 + <div class="menu-hr-wrap">
  38 + <div class="login-user" id="login-user-menu">
  39 + <img class="user-photo" src="imgs/touxiang.jpg" alt="头像" />
  40 + <h3>登录用户</h3>
  41 + <span class="login-user-name">fanwh</span>
40 42 </div>
41   - <div class="menu-items-wrap">
42   - <ul class="primary-items">
43   - <li><a href="#userInfo"><i class="fa fa-home blue-icon fa-fw"></i>主页</a></li>
44   - <li><a href="#formEditor"><i class="fa fa-user green-icon fa-fw"></i>表单设置</a></li>
45   - <li><a href="#approvalEditor"><i class="fa fa-plug yellow-icon fa-fw"></i>自动化</a></li>
46   - <li><a href="#"><i class="fa fa-inbox purple-icon fa-fw"></i>消息历史纪录</a></li>
47   - <li><a href="#"><i class="fa fa-file blue-icon fa-fw"></i>文件管理</a></li>
48   - <li><a href="#"><i class="fa fa-group red-icon fa-fw"></i>团队目录</a></li>
49   - <li><a href="#"><i class="fa fa-dashboard green-icon fa-fw"></i>统计资料</a></li>
50   - <li><a href="#"><i class="fa fa-magic yellow-icon fa-fw"></i>个性化设置</a></li>
51   - </ul>
52   - <h3>管理设置</h3>
53   - <ul class="secondary-items" >
54   - <li><a href="#">团队设置</a></li>
55   - <li><a href="#">团队管理</a></li>
56   - <li><a href="#">邀请他人</a></li>
57   - <li><a href="#">付费用户</a></li>
58   - <li><a href="#">认证</a></li>
59   - </ul>
  43 + </div>
  44 + <div class="menu-items-wrap">
  45 + <ul class="primary-items">
  46 + <li><a href="#userInfo"><i class="fa fa-home blue-icon fa-fw"></i>主页</a></li>
  47 + <li><a href="#formEditor"><i class="fa fa-user green-icon fa-fw"></i>表单设置</a></li>
  48 + <li><a href="#approvalEditor"><i class="fa fa-plug yellow-icon fa-fw"></i>自动化</a></li>
  49 + <li><a href="#"><i class="fa fa-inbox purple-icon fa-fw"></i>消息历史纪录</a></li>
  50 + <li><a href="#"><i class="fa fa-file blue-icon fa-fw"></i>文件管理</a></li>
  51 + <li><a href="#"><i class="fa fa-group red-icon fa-fw"></i>团队目录</a></li>
  52 + <li><a href="#"><i class="fa fa-dashboard green-icon fa-fw"></i>统计资料</a></li>
  53 + <li><a href="#"><i class="fa fa-magic yellow-icon fa-fw"></i>个性化设置</a></li>
  54 + </ul>
  55 + <h3>管理设置</h3>
  56 + <ul class="secondary-items">
  57 + <li><a href="#">团队设置</a></li>
  58 + <li><a href="#">团队管理</a></li>
  59 + <li><a href="#">邀请他人</a></li>
  60 + <li><a href="#">付费用户</a></li>
  61 + <li><a href="#">认证</a></li>
  62 + </ul>
  63 + </div>
  64 + <div class="menu-footer">
  65 + <ul class="menu-footer-wrap">
  66 + <li><a href="#/is">产品介绍</a></li>
  67 + <li><a href="#/apps">轻松HR Apps</a></li>
  68 + <li><a href="#/brand-guidelines">品牌指导</a></li>
  69 + <li><a href="#/help">帮助中心</a></li>
  70 + <li><a target="_blank" href="#">应用接口<i
  71 + class="ts_icon ts_icon_external_link small_left_margin ts_icon_inherit"></i></a></li>
  72 + <li><a href="#/account/gateways">网关设置</a></li>
  73 + </ul>
  74 + </div>
  75 + </div>
  76 + <div class="container-hr">
  77 + <div class="head-hr z-depth-1">
  78 + <div class="menu-toggle" id="show-menu">
  79 + <span class="menu-icon fa fa-reorder"></span>
  80 + <span class="menu-label">菜单</span>
60 81 </div>
61   - <div class="menu-footer">
62   - <ul class="menu-footer-wrap">
63   - <li><a href="#/is">产品介绍</a></li>
64   - <li><a href="#/apps">轻松HR Apps</a></li>
65   - <li><a href="#/brand-guidelines">品牌指导</a></li>
66   - <li><a href="#/help">帮助中心</a></li>
67   - <li><a target="_blank" href="#">应用接口<i class="ts_icon ts_icon_external_link small_left_margin ts_icon_inherit"></i></a></li>
68   - <li><a href="#/account/gateways">网关设置</a></li>
69   - </ul>
  82 + <div class="vert-divider"></div>
  83 + <div class="header-team-name" id="header-team-name">
  84 + <a href="#/home">
  85 + <i class="fa fa-home"></i>
  86 + 谈华芳项目组
  87 + </a>
70 88 </div>
71   - </div>
72   - <div class="container-hr">
73   - <div class="head-hr z-depth-1">
74   - <div class="menu-toggle" id="show-menu">
75   - <span class="menu-icon fa fa-reorder"></span>
76   - <span class="menu-label">菜单</span>
77   - </div>
78   - <div class="vert-divider"></div>
79   - <div class="header-team-name" id="header-team-name">
80   - <a href="#/home">
81   - <i class="fa fa-home"></i>
82   - 谈华芳项目组
  89 + <div class="header-nav">
  90 + <div class="header-btns float-right">
  91 + <a id="team-switcher" href={`${__PREFIX__}signOut`}>
  92 + <i class="fa fa-sign-out"></i>
  93 + <span class="block label">退出</span>
  94 + </a>
  95 + <a id="team-switcher">
  96 + <i class="fa fa-th-large"></i>
  97 + <span class="block label">团队</span>
  98 + </a>
  99 + <a id="help-link" href="#/help">
  100 + <i class="fa fa-support"></i>
  101 + <span class="block label">帮助</span>
  102 + </a>
  103 + <a href="/chat">
  104 + <img class="photo-sm" src="imgs/touxiang.jpg">
  105 + <span class="block label">企信</span>
83 106 </a>
84 107 </div>
85   - <div class="header-nav">
86   - <div class="header-btns float-right">
87   - <a id="team-switcher" href="/signOut">
88   - <i class="fa fa-sign-out"></i>
89   - <span class="block label">退出</span>
90   - </a>
91   - <a id="team-switcher">
92   - <i class="fa fa-th-large"></i>
93   - <span class="block label">团队</span>
94   - </a>
95   - <a id="help-link" href="#/help">
96   - <i class="fa fa-support"></i>
97   - <span class="block label">帮助</span>
98   - </a>
99   - <a href="/chat">
100   - <img class="photo-sm" src="imgs/touxiang.jpg" >
101   - <span class="block label">企信</span>
102   - </a>
103   - </div>
104   - </div>
105 108 </div>
106   - <div class="content-hr">
107   - <!-- < include forms/editor.ejs%> -->
108   - <!-- < include forms/formOperation.ejs%> -->
109   - <!-- < include initialization/addEmployee.ejs%> -->
110   - <!-- < include initialization/importEmployee.ejs%> -->
111   - <div class="content-body pt-page pt-page-current">
112   - </div>
113   - <div class="content-body pt-page pt-page-next">
114   - </div>
115   - <div class="overlay hide"></div>
  109 + </div>
  110 + <div class="content-hr">
  111 + <!-- < include forms/editor.ejs%> -->
  112 + <!-- < include forms/formOperation.ejs%> -->
  113 + <!-- < include initialization/addEmployee.ejs%> -->
  114 + <!-- < include initialization/importEmployee.ejs%> -->
  115 + <div class="content-body pt-page pt-page-current">
  116 + </div>
  117 + <div class="content-body pt-page pt-page-next">
116 118 </div>
  119 + <div class="overlay hide"></div>
117 120 </div>
118   -
119   - <script type="text/javascript">
120   - $('#login-user-menu').click(function(e){
121   - $('.menu-hr').removeClass("open-menu");
122   - $('.container-hr').removeClass("open-container-menu");
123   - $('#show-menu').removeClass("show-menu");
124   - $('.overlay').removeClass('hide');
125   - });
126   - $('#show-menu').click(function(e){
127   - if(!$('#show-menu').hasClass('show-menu')){
128   - $('.menu-hr').addClass("open-menu");
129   - $('.container-hr').addClass("open-container-menu");
130   - $('#show-menu').addClass("show-menu");
131   - $('.overlay').removeClass('hide');
132   - }else{
133   - $('.menu-hr').removeClass("open-menu");
134   - $('.container-hr').removeClass("open-container-menu");
135   - $('#show-menu').removeClass("show-menu");
136   - $('.overlay').addClass('hide');
137   - }
138   - });
139   - $('.overlay').click(function(e){
140   - $('.menu-hr').removeClass("open-menu");
141   - $('.container-hr').removeClass("open-container-menu");
142   - $('#show-menu').removeClass("show-menu");
143   - $('.overlay').addClass('hide');
144   - });
145   - var loader=new Loader({
146   - routes:{
147   - '/userInfo':userInfo,
148   - '/formEditor':formEditor,
149   - '/approvalEditor':approvalEditor
150   - },
151   - defaults:'/userInfo'
152   - });
153   - loader.init();
154   - function userInfo(){
155   - loader.import('/views/hr/userInfo.html').then(function(p){
156   - $('.pt-page-next').html(p);
157   - loader.page.nextPage();
158   - });
159   - }
160   - function approvalEditor(){
161   - loader.import('/views/approval/editor.html').then(function(p){
162   - $('.pt-page-next').html(p);
163   - loader.page.nextPage();
164   - });
165   - }
166   - function formEditor(){
167   - loader.import('/views/form/editor.html').then(function(p){
168   - $('.pt-page-next').html(p);
169   - loader.page.nextPage();
170   - });
171   - }
172   -
173   - </script>
174   - </body>
  121 + </div>
  122 +
  123 + <script type="text/javascript">
  124 + $('#login-user-menu').click(function (e) {
  125 + $('.menu-hr').removeClass("open-menu");
  126 + $('.container-hr').removeClass("open-container-menu");
  127 + $('#show-menu').removeClass("show-menu");
  128 + $('.overlay').removeClass('hide');
  129 + });
  130 + $('#show-menu').click(function (e) {
  131 + if (!$('#show-menu').hasClass('show-menu')) {
  132 + $('.menu-hr').addClass("open-menu");
  133 + $('.container-hr').addClass("open-container-menu");
  134 + $('#show-menu').addClass("show-menu");
  135 + $('.overlay').removeClass('hide');
  136 + } else {
  137 + $('.menu-hr').removeClass("open-menu");
  138 + $('.container-hr').removeClass("open-container-menu");
  139 + $('#show-menu').removeClass("show-menu");
  140 + $('.overlay').addClass('hide');
  141 + }
  142 + });
  143 + $('.overlay').click(function (e) {
  144 + $('.menu-hr').removeClass("open-menu");
  145 + $('.container-hr').removeClass("open-container-menu");
  146 + $('#show-menu').removeClass("show-menu");
  147 + $('.overlay').addClass('hide');
  148 + });
  149 + var loader = new Loader({
  150 + routes: {
  151 + '/userInfo': userInfo,
  152 + '/formEditor': formEditor,
  153 + '/approvalEditor': approvalEditor
  154 + },
  155 + defaults: '/userInfo'
  156 + });
  157 + loader.init();
  158 + function userInfo() {
  159 + loader.import('/views/hr/userInfo.html').then(function (p) {
  160 + $('.pt-page-next').html(p);
  161 + loader.page.nextPage();
  162 + });
  163 + }
  164 + function approvalEditor() {
  165 + loader.import('/views/approval/editor.html').then(function (p) {
  166 + $('.pt-page-next').html(p);
  167 + loader.page.nextPage();
  168 + });
  169 + }
  170 + function formEditor() {
  171 + loader.import('/views/form/editor.html').then(function (p) {
  172 + $('.pt-page-next').html(p);
  173 + loader.page.nextPage();
  174 + });
  175 + }
  176 +
  177 + </script>
  178 +</body>
  179 +
175 180 </html>
\ No newline at end of file
... ...
1 1 <!DOCTYPE html>
2 2 <html>
3   - <head>
4   - <title></title>
5   - <meta http-equiv="X-UA-Compatible" content="IE=10">
6   - <meta name="csrf-token" content="<%=htmlWebpackPlugin.options.csrfToken%>">
7   - <METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
8   - <METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
9   - <METAHTTP-EQUIV="Expires"CONTENT="0">
10   - <link rel="stylesheet" type="text/css" href="css/core.css">
11   - <link rel="stylesheet" type="text/css" href="css/antd.min.css">
12   - <style type="text/css">
13   - </style>
14   - <script src="//cdn.ronghub.com/RongIMLib-2.2.8.min.js"></script>
15   - <script src="/js/plupload.full.min.js"></script>
16   - <link rel="stylesheet" href="css/jquery-ui-1.10.4.custom.min.css">
17   - <script type="text/javascript" src="/js/jquery-1.9.1.js"></script>
18   - <script type="text/javascript" src="/js/jquery-ui-1.10.4.custom.min.js"></script>
19   - <script type="text/javascript" src="/js/primitives.min.js"></script>
20   - <link href="/css/primitives.latest.css" media="screen" rel="stylesheet" type="text/css">
21   - <script type="text/javascript" src="//webapi.amap.com/maps?v=1.3&key=8cb4df3e0698fa29ccbe07db325948cc"></script>
22   - <script src="//webapi.amap.com/ui/1.0/main.js"></script>
23   - <script src="//gosspublic.alicdn.com/aliyun-oss-sdk-4.3.0.min.js"></script>
24   - <script type="text/javascript" src="/js/getorgchart/getorgchart.js"></script>
25   - <link rel="stylesheet" href="/js/getorgchart/getorgchart.css">
26   - <script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1273424455'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s22.cnzz.com/z_stat.php%3Fid%3D1273424455%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));
27   - </script>
28   - </head>
29   - <body class="bootStrapShadow">
30   - <div id="root" class="root"></div>
31   - <script>
32   -
33   - </script>
34   - </body>
  3 +
  4 +<head>
  5 + <title></title>
  6 + <meta http-equiv="X-UA-Compatible" content="IE=10">
  7 + <meta name="csrf-token" content="<%=htmlWebpackPlugin.options.csrfToken%>">
  8 + <METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
  9 + <METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
  10 + <METAHTTP-EQUIV="Expires"CONTENT="0">
  11 + <link rel="stylesheet" type="text/css" href="css/core.css">
  12 + <link rel="stylesheet" type="text/css" href="css/antd.min.css">
  13 + <style type="text/css">
  14 + </style>
  15 + <script src="//cdn.ronghub.com/RongIMLib-2.2.8.min.js"></script>
  16 + <script src="js/plupload.full.min.js"></script>
  17 + <link rel="stylesheet" href="css/jquery-ui-1.10.4.custom.min.css">
  18 + <script type="text/javascript" src="js/jquery-1.9.1.js"></script>
  19 + <script type="text/javascript" src="js/jquery-ui-1.10.4.custom.min.js"></script>
  20 + <script type="text/javascript" src="js/primitives.min.js"></script>
  21 + <link href="css/primitives.latest.css" media="screen" rel="stylesheet" type="text/css">
  22 + <script type="text/javascript" src="//webapi.amap.com/maps?v=1.3&key=8cb4df3e0698fa29ccbe07db325948cc"></script>
  23 + <script src="//webapi.amap.com/ui/1.0/main.js"></script>
  24 + <script src="//gosspublic.alicdn.com/aliyun-oss-sdk-4.3.0.min.js"></script>
  25 + <script type="text/javascript" src="js/getorgchart/getorgchart.js"></script>
  26 + <link rel="stylesheet" href="js/getorgchart/getorgchart.css">
  27 + <script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cspan id='cnzz_stat_icon_1273424455'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s22.cnzz.com/z_stat.php%3Fid%3D1273424455%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));
  28 + </script>
  29 +</head>
  30 +
  31 +<body class="bootStrapShadow">
  32 + <div id="root" class="root"></div>
  33 + <script>
  34 +
  35 + </script>
  36 +</body>
  37 +
35 38 </html>
\ No newline at end of file
... ...
  1 +<!DOCTYPE html>
  2 +<html >
  3 + <head>
  4 + <title></title>
  5 + <style>
  6 + #father {
  7 + width: 100vw;
  8 + height: 100vh;
  9 + background-color: skyblue;
  10 + position: relative;
  11 + padding: 0;
  12 + margin: 0;
  13 + }
  14 +
  15 + #son {
  16 + width: 200px;
  17 + height: 200px;
  18 + position: absolute;
  19 + left: 50%;
  20 + top: 50%;
  21 + margin-left: -100px;
  22 + margin-top: -100px;
  23 + text-align: center;
  24 + }
  25 + </style>
  26 + </head>
  27 + <body id="father">
  28 + <div id="son" >
  29 + <div>
  30 + <svg t="1562047045753" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3393" width="100" height="100" data-spm-anchor-id="a313x.7781069.0.i3"><path d="M575.986694 832.039919C575.986694 867.356032 547.316113 896.026613 512 896.026613 476.683887 896.026613 448.013306 867.356032 448.013306 832.039919 448.013306 796.723806 476.683887 768.048156 512 768.048156 547.316113 768.048156 575.986694 796.64777 575.986694 832.039919ZM512 255.997465C476.683887 255.997465 448.013306 284.668046 448.013306 319.984159L448.013306 639.998733C448.013306 675.314846 476.683887 703.990496 512 703.990496 547.316113 703.990496 575.986694 675.314846 575.986694 639.998733L575.986694 319.984159C575.986694 284.668046 547.316113 255.997465 512 255.997465ZM1023.979724 896.026613C1023.979724 966.729805 966.709529 1024.005069 896.006336 1024.005069L127.993664 1024.005069C57.290471 1024.005069 0.020276 966.658839 0.020276 896.026613 0.020276 874.868373 5.216059 854.931776 14.39105 837.311737L14.320083 837.24077 398.250384 69.304133 398.392317 69.304133C419.626593 28.133261 462.455047 0.040552 512 0.040552 561.544953 0.040552 604.373407 28.209297 625.67865 69.3751L1008.311272 834.711311C1018.348003 852.838256 1023.979724 873.783595 1023.979724 896.026613ZM959.99303 896.026613C959.99303 885.123073 957.392604 874.868373 952.191753 865.404445L951.613881 864.319667 951.112044 863.239958 568.621355 98.405584C557.499847 77.171308 535.834701 64.027246 512 64.027246 488.023365 64.027246 466.282184 77.318311 455.160675 98.765487L452.12938 104.544211 92.175714 824.527578 92.677551 825.034483 71.154339 866.778159C66.389426 875.948082 64.00697 885.842879 64.00697 896.097579 64.00697 931.413692 92.748517 960.089342 127.993664 960.089342L896.006336 960.089342C931.322449 960.013306 959.99303 931.342726 959.99303 896.026613Z" p-id="3394" fill="#f4a251"></path></svg>
  31 + </div>
  32 + <div style="margin-top: 16px;">
  33 + 登陆失败,授权码无效
  34 + </div>
  35 + </div>
  36 + </body>
  37 +</html>
\ No newline at end of file
... ...
... ... @@ -339,7 +339,7 @@
339 339 }
340 340 var isWeixin = is_weixin();
341 341 var winHeight = typeof window.innerHeight != 'undefined' ? window.innerHeight : document.documentElement.clientHeight;
342   - var weixinTip = $('<div id="weixinTip"><p><img src="/img/live_weixin.png" alt="微信打开"/></p></div>');
  342 + var weixinTip = $('<div id="weixinTip"><p><img src="./img/live_weixin.png" alt="微信打开"/></p></div>');
343 343
344 344 if(isWeixin){
345 345 $("body").append(weixinTip);
... ...
... ... @@ -41,7 +41,7 @@
41 41 <div class="container">
42 42 <div class="row">
43 43 <div id="bgImg" class="col-lg-12 col-sm-12 col-md-12 col-xs-12 text-center">
44   - <img src="../img/Group.png" class="img-responsive">
  44 + <img src=".../img/Group.png" class="img-responsive">
45 45 </div>
46 46 </div>
47 47 <div class="row">
... ...
1 1 import React, { PropTypes } from 'react';
2 2 import { connect } from 'react-redux';
3   -import { Button, Tabs, Menu } from 'antd';
  3 +import { Button, Tabs, Menu, Icon } from 'antd';
4 4 import cx from 'classnames';
5 5 import s from './systemMenuLess.les';
6 6 import { doLogin, sendQuickLoginSmsCode } from '../redux/actions/authed';
... ... @@ -68,14 +68,18 @@ class SystemMenu extends React.Component {
68 68 dispatch(loadUnreadMessage())
69 69 }
70 70 render() {
71   - let { menus, userInfo, height, width } = this.props;
  71 + let { menus, userInfo, height, width, collapsed } = this.props;
72 72 const { user = {}, tenant = {} } = userInfo;
73   - const { collapsed, active, imageUrl, userImage, logoImage, defaultSelectedKeys, defaultOpenKeys } = this.state;
  73 + const { active, imageUrl, userImage, logoImage, defaultSelectedKeys, defaultOpenKeys } = this.state;
74 74 const renderSubMenu = (subMenus) => {
75 75 return subMenus.map((subMenu, i) => {
76 76 return (
77 77 <Menu.Item key={subMenu.module}>
78   - <span className="nav-text">{subMenu.display_name}{subMenu && subMenu.is_beta && subMenu.is_beta == 'y' && <span style={{ color: 'rgba(153, 169, 191,0.6)' }}> 试用 </span>}</span>
  78 + <span>{subMenu.display_name}</span>
  79 + {
  80 + subMenu && subMenu.is_beta && subMenu.is_beta == 'y' &&
  81 + <span style={{ color: 'rgba(153, 169, 191,0.6)' }}> 试用 </span>
  82 + }
79 83 </Menu.Item>
80 84 )
81 85 });
... ... @@ -86,15 +90,22 @@ class SystemMenu extends React.Component {
86 90 if (tenant.biz_type == '0' || tenant.biz_type == '1') {
87 91 return (
88 92 <div className={cx(s.system_menu_wrap, 'system_menu_wrap')} style={{ height: height - 160 }}>
89   - <CustomScrollbars viewStyle={{ paddingRight: '10px' }} theme="white"> {/*onSelect*/}
90   - <Menu theme="dark" mode={this.state.mode} onClick={this.changeMenu} onOpenChange={this.changeOpenSubMenu} onCollapse={this.onCollapse}
91   - style={{ borderRight: '1px solid transparent', backgroundColor: '#0f2139' }}
  93 + <CustomScrollbars viewStyle={{ paddingRight: '10px' }} theme="white">
  94 + <Menu theme="light" mode={'inline'} onClick={this.changeMenu}
  95 + inlineCollapsed={this.props.collapsed}
  96 + onOpenChange={this.changeOpenSubMenu}
  97 + style={{ borderRight: '1px solid transparent', backgroundColor: '#fff' }}
92 98 selectedKeys={[defaultSelectedKeys]} openKeys={[defaultOpenKeys]}>
93 99 {menus && menus.map((menu, i) => {
94 100 if (menu.children) {
95 101 return (
96 102 <SubMenu key={menu.module} title={
97   - <span><img style={{ width: '12px', marginRight: '8px', verticalAlign: 'baseline' }} src={menuIconMap[menu.module]} alt="" />{menu.display_name}</span>
  103 + <span>
  104 + <img
  105 + style={{ width: '20px', position: 'relative', top: '-2px', right: '5px' }}
  106 + src={menuIconMap[menu.module]} alt="" />
  107 + <span>{collapsed ? '' : menu.display_name}</span>
  108 + </span>
98 109 }>
99 110 {renderSubMenu(menu.children)}
100 111 </SubMenu>
... ... @@ -102,13 +113,12 @@ class SystemMenu extends React.Component {
102 113 } else {
103 114 return (
104 115 <Menu.Item key={menu.module} >
105   - <span className="nav-text">
106   - <img style={{ width: '12px', marginRight: '8px', verticalAlign: 'baseline' }} src={menuIconMap[menu.module]} alt="" />
107   - {menu.display_name}
108   - {/* {menu && menu.is_beta && menu.is_beta == 'y' && <span style={{ color: 'rgba(153, 169, 191,0.6)' }}>( 试用 )</span>} */}
109   - {/* TODO: 先写死 */}
110   - {menu && menu.module && menu.module == 'persontax' && <span className={cx(s.menu_new)}></span>}
111   - </span>
  116 + <img
  117 + style={{ width: '20px', position: 'relative', top: '-2px', right: '5px' }}
  118 + src={menuIconMap[menu.module]} alt="" />
  119 + <span>{menu.display_name}</span>
  120 + {/* 自然人税收 new图标 */}
  121 + {menu && menu.module && menu.module == 'persontax' && <span className={cx(s.menu_new)}></span>}
112 122 </Menu.Item>
113 123 )
114 124 }
... ...
  1 +import React, { PropTypes } from 'react';
  2 +import { connect } from 'react-redux';
  3 +import { Steps, Icon, Breadcrumb } from 'antd';
  4 +const Step = Steps.Step;
  5 +import cx from 'classnames';
  6 +import s from './commond.les';
  7 +
  8 +
  9 +class BreadcrumbWarp extends React.Component {
  10 + constructor(props) {
  11 + super(props);
  12 + this.state = {
  13 + }
  14 + }
  15 + static propTypes = {
  16 + crumbsData: PropTypes.array
  17 + }
  18 +
  19 + componentDidMount() {
  20 + }
  21 + componentWillReceiveProps(nextProps) {
  22 + }
  23 + componentWillUnmount() {
  24 + }
  25 + render() {
  26 + const { crumbsData = [] } = this.props;
  27 + return (
  28 + <div className={cx(s.bread_crumb_warp)}>
  29 + <span className={cx(s.bread_crumb_title)}>当前位置:</span>
  30 + <ul className={cx(s.bread_crumb_con)}>
  31 + {
  32 + crumbsData.map((data, i) => {
  33 + return (
  34 + <li onClick={() => { document.location.href = data.link }} key={i}><span className={cx(s.text)}>{data.name}</span></li>
  35 + )
  36 + })
  37 + }
  38 + </ul>
  39 + </div>
  40 + )
  41 + }
  42 +}
  43 +
  44 +export default BreadcrumbWarp;
... ...
  1 +@import "../../less/variables";
  2 +.new_steps_warp{
  3 + display :flex;
  4 + text-align:center;
  5 + position :relative;
  6 + li{
  7 + flex:1;
  8 + border-top:3px solid #efefef;
  9 + .step_warp{
  10 + .step_num{
  11 + color :#fff;
  12 + margin :16px auto 12px;
  13 + width :24px;
  14 + height :24px;
  15 + line-height :24px;
  16 + border-radius :50%;
  17 + background-color:#bcc9d4;
  18 + cursor :pointer;
  19 + }
  20 + .step_text{
  21 + font-size :14px;
  22 + color :#333;
  23 + font-weight:normal;
  24 + }
  25 + }
  26 + }
  27 + .beforeCurrent{
  28 + span:before{
  29 + content :' ';
  30 + display :block;
  31 + width :0;
  32 + border-top :3px solid #519FF0;
  33 + -webkit-transition:all .6s ease-in-out;
  34 + transition :all .6s ease-in-out;
  35 + box-shadow :0 0 0 0 #519FF0;
  36 + -webkit-animation :tailEffect .6s;
  37 + animation :tailEffect .6s;
  38 + position :relative;
  39 + top :-3px;
  40 + }
  41 + }
  42 + .current{
  43 + .step_warp{
  44 + .step_num{
  45 + background-color:#519FF0;
  46 + }
  47 + }
  48 + span:before{
  49 + content :' ';
  50 + display :block;
  51 + width :100%;
  52 + border-top :3px solid #519FF0;
  53 + -webkit-transition:all .6s ease-in-out;
  54 + transition :all .6s ease-in-out;
  55 + box-shadow :0 0 0 0 #519FF0;
  56 + -webkit-animation :tailEffect .6s;
  57 + animation :tailEffect .6s;
  58 + position :relative;
  59 + top :-3px;
  60 + }
  61 + }
  62 +}
  63 +
  64 +.new_tabs_warp{
  65 + .new_tabs_head{
  66 + display:flex;
  67 + //border :1px solid #E5E5E5;
  68 + li{
  69 + flex :1;
  70 + text-align :center;
  71 + padding :16px 0;
  72 + background-color:#f6f8fa;
  73 + font-size :14px;
  74 + a{
  75 + color : #333;
  76 + padding:0 24px 16px;
  77 + }
  78 + }
  79 + .current{
  80 + a{
  81 + color : #1089ee;
  82 + border-bottom:3px solid #519FF0;
  83 + }
  84 + }
  85 + li{
  86 + a:hover{
  87 + color:#1089ee;
  88 + }
  89 + }
  90 + }
  91 + .new_tabs_con{
  92 + padding:24px;
  93 + }
  94 +}
  95 +
  96 +.recomand_warp{
  97 + margin :32px;
  98 + padding :10px 32px;
  99 + background-color :#f8f8f8;
  100 + border-top-left-radius:10px;
  101 + border-bottom-right-radius:10px;
  102 +
  103 + .img{
  104 + width :18px;
  105 + height :auto;
  106 + margin-right :10px;
  107 + vertical-align:middle;
  108 + }
  109 + .text{
  110 + vertical-align:middle;
  111 + font-size :14px;
  112 + color :#999;
  113 + }
  114 +}
  115 +.bg_recomand_warp{
  116 + padding :12px 24px;
  117 + background-color:#fff5d5;
  118 + color :#f2942e;
  119 + border-radius :4px;
  120 +}
  121 +
  122 +.simple_tabs_warp{
  123 + .simple_tabs_head{
  124 + border-bottom :1px solid #E5E5E5;
  125 + li{
  126 + display :inline-block;
  127 + padding-bottom :16px;
  128 + font-size :14px;
  129 + a{
  130 + color :#333;
  131 + padding :0 8px 16px;
  132 + margin-right:32px;
  133 + }
  134 + }
  135 + .current{
  136 + a{
  137 + color : #1089ee;
  138 + border-bottom:2px solid #519FF0;
  139 + }
  140 + }
  141 + li{
  142 + a:hover{
  143 + color:#1089ee;
  144 + }
  145 + }
  146 + }
  147 + .simple_tabs_con{
  148 + padding:24px 0;
  149 + }
  150 + .simple_tabs_btn_head{
  151 + text-align: center;
  152 + li{
  153 + display :inline-block;
  154 + font-size:14px;
  155 + border :1px solid #E5E5E5;
  156 + a{
  157 + display:inline-block;
  158 + padding:8px 24px;
  159 + color :#333;
  160 + }
  161 + }
  162 + li{
  163 + border-right:none;
  164 + }
  165 + li:first-child{
  166 + border-top-left-radius :4px;
  167 + border-bottom-left-radius:4px;
  168 + }
  169 + li:last-child{
  170 + border-right:1px solid #E5E5E5;
  171 + border-top-right-radius :4px;
  172 + border-bottom-right-radius:4px;
  173 + }
  174 + li:hover{
  175 + border :1px solid #E5E5E5;
  176 + border-right:none;
  177 + a{
  178 + color:#1089ee;
  179 + }
  180 + }
  181 + li:last-child:hover{
  182 + border-right:1px solid #E5E5E5;
  183 + }
  184 + .current{
  185 + border :1px solid #1089ee;
  186 + border-right :none;
  187 + background-color:#1089ee;
  188 + a{
  189 + color : #fff;
  190 + }
  191 + }
  192 + .current:hover{
  193 + border : 1px solid #1089ee;
  194 + border-right :none;
  195 + a{
  196 + color : #fff;
  197 + }
  198 + }
  199 + }
  200 + .simple_tabs_bg_head{
  201 + //background-color:#f0f0f0;
  202 + border-bottom:1px solid #EDEFF2;
  203 + li{
  204 + display :inline-block;
  205 + font-size:14px;
  206 + position : relative;
  207 + -webkit-transition: all 0.4s ease-in-out 0s;
  208 + -moz-transition: all 0.4s ease-in-out 0s;
  209 + -o-transition: all 0.4s ease-in-out 0s;
  210 + -ms-transition: all 0.4s ease-in-out 0s;
  211 + a{
  212 + display:inline-block;
  213 + padding:12px 32px 14px;
  214 + color :#333;
  215 + }
  216 + }
  217 + .current{
  218 + background-color:#fff;
  219 + a{
  220 + color : #1089ee;
  221 + }
  222 + }
  223 + .current:before{
  224 + content : ' ';
  225 + border-top: 3px solid #1089ee;
  226 + transition: width 1s linear;
  227 + width : 100%;
  228 + display : inline-block;
  229 + position : absolute;
  230 + bottom : 0;
  231 + }
  232 + li:hover{
  233 + a{
  234 + color:#1089ee;
  235 + }
  236 + }
  237 + }
  238 +}
  239 +
  240 +.info_img{
  241 + width :32px;
  242 + height:32px;
  243 +}
  244 +
  245 +.map_warp{
  246 + position: relative;
  247 + .search_input_wrap{
  248 + width: 240px;
  249 + position: absolute;
  250 + z-index: 1000;
  251 + left: 5px;
  252 + top: 5px;
  253 + }
  254 +}
  255 +
  256 +.textAlign{
  257 + text-align:center;
  258 + margin:10px 0 30px 0;
  259 +}
  260 +.all_map_warp{
  261 + position: fixed;
  262 + top: 0;
  263 + left: 0;
  264 + right: 0;
  265 + bottom: 0;
  266 + z-index: 99999;
  267 + .search_input_wrap{
  268 + width: 240px;
  269 + position: absolute;
  270 + z-index: 1000;
  271 + left: 5px;
  272 + top: 5px;
  273 + }
  274 +}
  275 +.full_screen_btn{
  276 + position: absolute;
  277 + z-index: 1000;
  278 + right:16px;
  279 + top:8px;
  280 + cursor:pointer;
  281 + color: @link-color;
  282 +}
  283 +.upload_warp_style_con{
  284 + //font-size:13px;
  285 + color :#333;
  286 + .upload_warp_style{
  287 + width : 100%;
  288 + border : 1px solid #e9e9e9;
  289 + background: #F9FAFC;
  290 + .upload_file{
  291 + text-align : center;
  292 + margin : 8px;
  293 + height : 235px;
  294 + border : 1px dashed #e9e9e9;
  295 + }
  296 + .upload_file.upload_file_new{
  297 + height : 160px;
  298 + }
  299 + .request_text_warp{
  300 + padding : 24px 24px 16px;
  301 + background-color: #f9fafc;
  302 + position :relative;
  303 + .text_title{
  304 + font-weight:bold;
  305 + }
  306 + .text_con{
  307 + margin-top :8px;
  308 + color :#999;
  309 + line-height:2;
  310 + }
  311 + }
  312 + }
  313 + .upload_file_name{
  314 + margin:16px 0 0 4px;
  315 + .img{
  316 + vertical-align:middle;
  317 + }
  318 + .name{
  319 + color :#7e7e7e;
  320 + margin-left :8px;
  321 + vertical-align:middle;
  322 + }
  323 + }
  324 +}
  325 +
  326 +.info_img{
  327 + width :32px;
  328 + height:32px;
  329 +}
  330 +
  331 +.map_warp{
  332 + position: relative;
  333 + .search_input_wrap{
  334 + width: 240px;
  335 + position: absolute;
  336 + z-index: 1000;
  337 + left: 5px;
  338 + top: 5px;
  339 + }
  340 +}
  341 +.bread_crumb_warp{
  342 + font-size:14px;
  343 + color :rgba(0, 0, 0, 0.45);
  344 + background:#fff;
  345 + .bread_crumb_title{
  346 + display:inline-block;
  347 + margin-right:8px;
  348 + }
  349 + .bread_crumb_con{
  350 + display:inline-block;
  351 + li{
  352 + display:inline-block;
  353 + cursor :pointer;
  354 + }
  355 + li:hover{
  356 + .text{
  357 + color:@light-text-blue-color;
  358 + }
  359 + }
  360 + .isLink{
  361 + cursor :pointer;
  362 + &:hover{
  363 + color:@light-text-blue-color;
  364 + }
  365 + }
  366 + .notLink{
  367 + cursor :text;
  368 + &:hover{
  369 + //color:@text-blue-color;
  370 + }
  371 + }
  372 +
  373 + li:after{
  374 + content :'>';
  375 + width :24px;
  376 + margin :0 6px;
  377 + font-size:16px;
  378 + color:#999;
  379 + }
  380 + li:last-child:after{
  381 + content:' ';
  382 + }
  383 + li:last-child{
  384 + cursor:text;
  385 + color:@light-text-blue-color;
  386 + .text{
  387 + color:@light-text-blue-color;
  388 + }
  389 + }
  390 + }
  391 +}
  392 +
  393 +.mapping_excel_columns_wrp{
  394 + border :1px dashed transparent;
  395 + display :inline-block;
  396 + margin :0 8px 8px 0;
  397 + padding :2px 8px;
  398 + text-align :center;
  399 + .border_style{
  400 + display :inline-block;
  401 + border :1px dashed #d9d9d9;
  402 + border-radius:2px;
  403 + padding :2px 8px;
  404 + margin-bottom:8px;
  405 + min-width :130px;
  406 + background-color:#fff;
  407 + }
  408 +}
  409 +.mapping_excel_columns_wrp_drop{
  410 + border :1px dashed #008dff;
  411 + border-radius:2px;
  412 +}
  413 +.mapping_tag_warp{
  414 + min-width :130px;
  415 + cursor :move;
  416 + display :inline-block;
  417 + margin :0 8px 8px 0;
  418 + border :1px dashed #d9d9d9;
  419 + padding :2px 8px;
  420 + text-align :center;
  421 + background-color:#fff;
  422 + border-radius:2px;
  423 +}
  424 +
  425 +.mapping_columns_warp{
  426 + .column_title{
  427 + min-width:1000px;
  428 + margin : 8px 0 24px;
  429 + color : #1F2D3D;
  430 + .mapping_tip_warp{
  431 + min-width : 130px;
  432 + display : inline-block;
  433 + margin-left: 8px;
  434 + color : #999;
  435 + font-size : 12px;
  436 + font-weight:normal;
  437 + .tip_img{
  438 + width : 16px;
  439 + vertical-align: middle;
  440 + margin-right : 6px;
  441 + margin-top : -4px;
  442 + }
  443 + }
  444 + }
  445 + .excel_column_wrap{
  446 + max-height: 170px;
  447 + overflow: auto;
  448 + }
  449 + .excel_column_wrap,.sys_column_wrap{
  450 + border : 1px solid #efefef;
  451 + border-radius: 5px;
  452 + padding : 8px 16px;
  453 + background : #EEF4F8;
  454 + .inline_block{
  455 + display : inline-block;
  456 + text-align : center;
  457 + min-height : 47px;
  458 + margin-bottom : 13px;
  459 + vertical-align: top;
  460 + position : relative;
  461 + .drop_mapping_tag_warp{
  462 + .drop_mapping_tag{
  463 + position :relative;
  464 + min-width :130px;
  465 + cursor :move;
  466 + display :block;
  467 + border :1px dashed #d9d9d9;
  468 + padding :2px 8px;
  469 + border-radius:2px;
  470 + background-color:#fff;
  471 + .icon_style{
  472 + color :#f81d22;
  473 + position:absolute;
  474 + right :-2px;
  475 + top :-2px;
  476 + cursor :pointer;
  477 + }
  478 + }
  479 + }
  480 + }
  481 + }
  482 +}
... ...
  1 +import React, { PropTypes } from 'react';
  2 +import { connect } from 'react-redux';
  3 +import { Steps, Icon, Breadcrumb } from 'antd';
  4 +const Step = Steps.Step;
  5 +import cx from 'classnames';
  6 +import s from './commond.les';
  7 +
  8 +
  9 +class BreadcrumbWarp extends React.Component {
  10 + constructor(props) {
  11 + super(props);
  12 + this.state = {
  13 + }
  14 + }
  15 + static propTypes = {
  16 + crumbsData: PropTypes.array
  17 + }
  18 +
  19 + componentDidMount() {
  20 + }
  21 + componentWillReceiveProps(nextProps) {
  22 + }
  23 + componentWillUnmount() {
  24 + }
  25 + render() {
  26 + const { crumbsData = [] } = this.props;
  27 + return (
  28 + <div className={cx(s.bread_crumb_warp)}>
  29 + <span className={cx(s.bread_crumb_title)}>当前位置:</span>
  30 + <ul className={cx(s.bread_crumb_con)}>
  31 + {
  32 + crumbsData.map((data, i) => {
  33 + return (
  34 + <li onClick={() => { document.location.href = data.link }} key={i} className={data.isLink ? cx(s.isLink) : cx(s.notLink)}>
  35 + <span className={data.isLink ? cx(s.text) : null}>{data.name}</span>
  36 + </li>
  37 + )
  38 + })
  39 + }
  40 + </ul>
  41 + </div>
  42 + )
  43 + }
  44 +}
  45 +
  46 +export default BreadcrumbWarp;
... ...
... ... @@ -11,6 +11,10 @@
11 11 height: 14px;
12 12 top: -4px;
13 13 left: 4px;
14   - background: url(./img/menu_new.png) no-repeat;
  14 + background: url(../img/menu_new.png) no-repeat;
15 15 background-size: 100% 100%;
  16 +}
  17 +
  18 +:global .ant-menu-inline-collapsed-tooltip {
  19 + min-width: 160px;
16 20 }
\ No newline at end of file
... ...
... ... @@ -188,7 +188,7 @@
188 188 }
189 189
190 190 .task_node_wrap{
191   - background: url($http+"/img/line-bg.png") repeat-y 30px 0;
  191 + background: url($http+"./img/line-bg.png") repeat-y 30px 0;
192 192 }
193 193 .task_node_icon{
194 194 width: 30px;
... ...
... ... @@ -94,7 +94,7 @@
94 94 border-radius: 5px;
95 95 padding:13px 5px 10px 26px;
96 96 color: #a5a5a5;
97   - background: url($http+"/img/icon-support.png") no-repeat 5px 50%;
  97 + background: url($http+"./img/icon-support.png") no-repeat 5px 50%;
98 98 }
99 99 .ui_btn{
100 100 cursor: pointer;
... ...
... ... @@ -42,7 +42,7 @@ class Member extends React.Component {
42 42 return(
43 43 <div className={cx(s.member_token)} onClick={this.onClick}>
44 44 {choiceType=='multi'&&<input type="checkbox" checked={checked} onChange={this.onChange}/>}
45   - <Gravatar path={imageUrl||'/img/user.jpg'} size='60'></Gravatar>
  45 + <Gravatar path={imageUrl||'./img/user.jpg'} size='60'></Gravatar>
46 46 <div className={cx(s.member_info)}>
47 47 <div className={cx(s.member_info_item)}>{name}</div>
48 48 </div>
... ...
... ... @@ -40,7 +40,7 @@ class MyList extends React.Component {
40 40 </a>
41 41 }
42 42 <Member checked={false} myself={false}
43   - imageUrl='http://localhost:3001//img/user.jpg' name={item.name} uuid={item.uuid} onClick={onChoose} onChange={onChange} choiceType={choiceType}/>
  43 + imageUrl='http://localhost:3001/./img/user.jpg' name={item.name} uuid={item.uuid} onClick={onChoose} onChange={onChange} choiceType={choiceType}/>
44 44 </div>);
45 45
46 46 // return <div {...props}> {item.name} </div>
... ...
... ... @@ -92,7 +92,7 @@
92 92 border-radius: 5px;
93 93 padding:13px 5px 10px 26px;
94 94 color: #a5a5a5;
95   - background: url($http+"/img/icon-support.png") no-repeat 5px 50%;
  95 + background: url($http+"./img/icon-support.png") no-repeat 5px 50%;
96 96 }
97 97 .ui_btn{
98 98 cursor: pointer;
... ...
... ... @@ -154,7 +154,7 @@ export class RongClundWrap extends React.Component {
154 154 return (
155 155 <li key={i} className={cx(user.senderUserId==selecedUser?s.seleced:null)} onClick={this.selecedUser.bind(this,user)}>
156 156 <Badge count={user.count}>
157   - <img src="/img/招聘头像.png" alt=""/>
  157 + <img src="./img/招聘头像.png" alt=""/>
158 158 </Badge>
159 159 <span>{user.name}</span>
160 160 </li>
... ... @@ -180,7 +180,7 @@ export class RongClundWrap extends React.Component {
180 180 return (
181 181 <div className={cx(s.messages_item_wrap,s.left)} key={i}>
182 182 <img style={{width:'24px',height:'24px',borderRadius:'50%',marginRight:'4px'}}
183   - onError={()=>{this.setState({userImg:'/img/招聘头像.png'})}} src={userImg?userImg:`https://hropublic.oss-cn-beijing.aliyuncs.com/user_image/users/${msg.senderUserId}?t=${new Date().getTime()}`}
  183 + onError={()=>{this.setState({userImg:'./img/招聘头像.png'})}} src={userImg?userImg:`https://hropublic.oss-cn-beijing.aliyuncs.com/user_image/users/${msg.senderUserId}?t=${new Date().getTime()}`}
184 184 alt=""/>
185 185 <span className={cx(s.messages_item_body)}>{msg.content}</span>
186 186 </div>
... ...
... ... @@ -422,7 +422,7 @@ class SimpEditor extends React.Component {
422 422 'alignment'
423 423 ],
424 424 emoji: {
425   - imagePath: '/img/emoji/'
  425 + imagePath: './img/emoji/'
426 426 },
427 427 defaultImage: '/content/images/empty.png',
428 428 upload: {
... ...
... ... @@ -5,6 +5,7 @@ import s from './uploader.les';
5 5 import * as fetch from '../../utils/fetch';
6 6 import { getTokenForFile } from '../../utils/fileUtil';
7 7 import { notification } from 'antd';
  8 +import customer from '../../containers/customer';
8 9 import { extractResumeAct, analyzeCandidateResume, startAnalyze, cleanAnalyze } from '../../redux/actions/recruit';
9 10
10 11 let max_file_size_props = "20mb"
... ... @@ -39,6 +40,7 @@ export class UploadWrap extends React.Component {
39 40 keyNum: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
40 41 max_file_size: PropTypes.string,
41 42 maskShow: PropTypes.bool,
  43 + completeCallBack:PropTypes.func
42 44 }
43 45 static defaultProps = {
44 46 maxFileSize: 10,
... ... @@ -59,6 +61,7 @@ export class UploadWrap extends React.Component {
59 61 errorCallBack: () => { },
60 62 max_file_size: '20mb',
61 63 addFileName: false,
  64 + completeCallBack: () => {}
62 65 }
63 66 uploadBtn() {
64 67 const self = this;
... ... @@ -193,13 +196,13 @@ export class UploadWrap extends React.Component {
193 196 self.props.backResult(file);
194 197 },
195 198 FileUploaded: function (up, file, info) {
196   -
  199 + // console.log('upupupupupu',up)
197 200 const { files = [] } = up;
198   - console.log('filesfilesfilesfilesfiles', info, info.response);
  201 + // console.log('filesfilesfilesfilesfiles', info, info.response);
199 202 if (info && info.response) {
200 203 const backInfo = JSON.parse(info.response);
201 204 if ('${filename}' == backInfo.name) {
202   - backInfo.name = backInfo.object.substring(backInfo.object.lastIndexOf('/') + 1);
  205 + backInfo.name = backInfo.object.substring(backInfo.object.lastIndexOf('/')+1);
203 206 }
204 207 if (backInfo && backInfo.path) {
205 208 const name = backInfo.path.substring(backInfo.path.lastIndexOf('/') + 1); // '/' 换成 '.''
... ... @@ -210,7 +213,11 @@ export class UploadWrap extends React.Component {
210 213 self.props.endCallBack({ 'err': 'upload fail' });
211 214 }
212 215 },
213   - UploadComplete: function (up, files) { },
  216 + UploadComplete: function (up, files) {
  217 + console.log('upupupup',up)
  218 + console.log('filesfilesfilesfiles',files)
  219 + self.props.completeCallBack()
  220 + },
214 221 Error: function (up, err) {
215 222
216 223 // 上传过程中 如果有任何报错,将上传成功的文件保留,其余的剔除出上传队列
... ...
  1 +import React,{PropTypes} from 'react';
  2 +import { connect } from 'react-redux';
  3 +import cx from 'classnames';
  4 +import s from './uploader.les';
  5 +import * as fetch from '../../utils/fetch';
  6 +import { getTokenForFile } from '../../utils/fileUtil';
  7 +import { notification } from 'antd';
  8 +import customer from '../../containers/customer';
  9 +
  10 +export class UploadWrap extends React.Component {
  11 + constructor(props) {
  12 + super(props);
  13 + this.removeAllFile = this.removeAllFile.bind(this);
  14 + this.removeFile = this.removeFile.bind(this);
  15 + this.upload = this.upload.bind(this);
  16 + this.transformModel = this.transformModel.bind(this);
  17 + this.state={
  18 + timeStamp:Date.parse(new Date())
  19 + }
  20 + }
  21 + static propTypes = {
  22 + type : PropTypes.string,
  23 + maxFileSize: PropTypes.number,
  24 + onChange : PropTypes.func,
  25 + backResult : PropTypes.func,
  26 + endCallBack: PropTypes.func,
  27 + autoUpload : PropTypes.bool,
  28 + style : PropTypes.object,
  29 + extra : PropTypes.object,
  30 + single : PropTypes.bool,
  31 + extension : PropTypes.bool,
  32 + useFileName: PropTypes.bool,
  33 + autoName : PropTypes.bool,
  34 + mimeTypes : PropTypes.object,
  35 + multiple : PropTypes.bool,
  36 + keyNum : PropTypes.oneOfType([ PropTypes.string,PropTypes.number ]),
  37 + max_file_size: PropTypes.string,
  38 + maskShow: PropTypes.bool,
  39 + }
  40 + static defaultProps = {
  41 + maxFileSize:10,
  42 + autoUpload :false,
  43 + single :true,
  44 + extra :{},
  45 + extension :true,
  46 + useFileName:false,
  47 + autoName :false,
  48 + multiple :false,
  49 + mimeTypes :{},
  50 + keyNum :'1',
  51 + maskShow:false,
  52 + backResult :()=>{ },
  53 + onChange :()=>{ },
  54 + endCallBack:()=>{ },
  55 + max_file_size:'10mb'
  56 + }
  57 + uploadBtn(){
  58 + const self=this;
  59 + const {only=false, type,extra,name='${filename}',extension,useFileName,autoName,multiple, customerUrl = '',}=this.props;
  60 + const maskShow = self.props.maskShow
  61 + self.props.dispatch({ type: 'MASK_SHOW', maskShow })
  62 + getTokenForFile(type,'web_upload').then(data=>{
  63 + let Name,fileName,extensionName;
  64 + if(only){
  65 + Name=name;
  66 + }else{
  67 + const last=self.uploader.files[0]['name']
  68 + const num=last.lastIndexOf('.');
  69 + const lastName=last.substring(num);
  70 + Name=name+lastName;
  71 + fileName=last;
  72 + extensionName=lastName
  73 + }
  74 + let url = autoName?data.object_path+'/'+Date.parse(new Date()):useFileName?data.object_path+'/'+fileName:extension?data.object_path+extensionName:data.object_path
  75 + if (customerUrl) {
  76 + url = customerUrl
  77 + }
  78 +
  79 + self.uploader.ossToken=data;
  80 + const optionParam = {
  81 + 'url' :'https://'+data.bucket+"."+data.domain+'/',
  82 + // 'multi_selection' : multiple,
  83 + 'multipart_params' :{
  84 + 'Filename' : Name,
  85 + OSSAccessKeyId :data.access_key_id,
  86 + key : url,
  87 + policy :data.policy,
  88 + signature :data.signature,
  89 + callback :data.callback_body,
  90 + 'x:access_token': data.callback_token,
  91 + 'x:name' : fileName,
  92 + success_action_status:'200'
  93 + }
  94 + }
  95 + if(multiple){
  96 + optionParam.multipart_params.key=data.object_path+'/${filename}';
  97 + optionParam.multipart_params['x:name']='${filename}';
  98 + optionParam.multipart_params.Filename='${filename}';
  99 + }
  100 + self.uploader.setOption(optionParam);
  101 + self.uploader.start();
  102 + }).catch(err => { throw err; });
  103 + }
  104 + upload(){
  105 + this.uploadBtn();
  106 + }
  107 + removeAllFile(files){
  108 + const self = this;
  109 + let delFiles = this.uploader.files;
  110 + if(files){
  111 + delFiles = files;
  112 + }
  113 + if(delFiles){
  114 + delFiles.map((file,i)=>{
  115 + self.uploader.removeFile(file);
  116 + })
  117 + }
  118 + }
  119 + removeFile(file){
  120 + this.uploader.removeFile(file);
  121 + }
  122 + transformModel(backInfo){
  123 + const modal = Object.assign({}, backInfo, {
  124 + "file_id" : backInfo.uuid,
  125 + "target_type": backInfo.type,
  126 + "created_by" : backInfo.resource_owner_id,
  127 + "target_id" : backInfo.InstanceId,
  128 + "type" : backInfo.mime_type
  129 + })
  130 + return backInfo;
  131 + }
  132 + componentDidUpdate(prevProps, prevState){ }
  133 + componentDidMount(){
  134 + const self=this;
  135 + const { single,keyNum,typeName,mimeTypes,max_file_size }=this.props;
  136 + const dropId=this.props.dropId || '';
  137 + const { timeStamp }=this.state;
  138 + this.uploader = new plupload.Uploader({
  139 + runtimes : 'html5,flash,silverlight,html4',
  140 + browse_button : 'selectfiles'+keyNum+timeStamp,
  141 + container : self.refs['file_uploader_wrap'],
  142 + url : '//oss.aliyuncs.com',
  143 + drop_element : dropId,//filelist 放入id 拖拽文本框的id
  144 + filters:{
  145 +
  146 + max_file_size: max_file_size,
  147 +
  148 + mime_types:mimeTypes.extensions?[
  149 + mimeTypes
  150 + ]:[]
  151 + },
  152 + init: {
  153 + PostInit: function() {
  154 +
  155 + },
  156 + FileFiltered:function(uploader,file){
  157 +
  158 + },
  159 + FilesAdded: function(up, files) {
  160 + if(up.files&&up.files.length>0&&single){
  161 + const removeFiles=up.files.slice(0,up.files.length-1);
  162 + self.props.onChange(up.files[up.files.length-1]);
  163 + self.removeAllFile(removeFiles);
  164 + }
  165 + if(self.props.autoUpload){
  166 + self.uploadBtn();
  167 + }
  168 + },
  169 + UploadProgress: function(up, file) {
  170 + self.props.backResult(file);
  171 + },
  172 + FileUploaded: function(up, file, info) {
  173 + if(info&&info.response){
  174 + const backInfo=JSON.parse(info.response);
  175 + if('${filename}'==backInfo.name){
  176 + backInfo.name=backInfo.object.substring( backInfo.object.lastIndexOf('/'));
  177 + }
  178 + if(backInfo&&backInfo.path){
  179 + const name=backInfo.path.substring(backInfo.path.lastIndexOf('/')+1); // '/' 换成 '.''
  180 + self.props.endCallBack(self.transformModel({name,...backInfo}),typeName);
  181 + }else
  182 + self.props.endCallBack(self.transformModel(backInfo),typeName);
  183 + }else{
  184 + self.props.endCallBack({'err':'upload fail'});
  185 + }
  186 + },
  187 + UploadComplete:function(up, files){ },
  188 + Error: function(up, err){
  189 + notification.error({
  190 + message: '错误提示',
  191 + description: err.code,
  192 + });
  193 + }
  194 + }
  195 + });
  196 + this.uploader.init();
  197 + plupload.FILE_SIZE_ERROR = `上传文件过大,请小于${max_file_size}。`;
  198 + }
  199 + componentWillUnmount(){
  200 + console.log("12111111111111111113")
  201 + this.uploader.destroy();
  202 + }
  203 + render(){
  204 + const { style, keyNum, max_file_size} = this.props;
  205 + const { timeStamp } = this.state;
  206 + console.log(max_file_size)
  207 + return (
  208 + <div className={cx(s.upload_wrap)} style={style} ref='file_upload_wrap' id={"selectfiles"+keyNum+timeStamp}>
  209 + {this.props.children}
  210 + </div>
  211 + )
  212 + }
  213 +}
  214 +
  215 +
  216 +
  217 +// export default UploadWrap;
  218 +const mapState = (state) => {
  219 + return {
  220 + };
  221 +}
  222 +export default connect(mapState)(UploadWrap);
\ No newline at end of file
... ...
... ... @@ -45,7 +45,7 @@ export class OssImg extends React.Component {
45 45 render() {
46 46 const {url,id}=this.state;
47 47 return (
48   - <img src={url?url:'/img/电子文件.png'} alt="电子文件"/>
  48 + <img src={url?url:'./img/电子文件.png'} alt="电子文件"/>
49 49 );
50 50 }
51 51 }
... ...
... ... @@ -91,7 +91,7 @@ class MentionsInput extends React.Component {
91 91 return (
92 92 <div className={cx(s.suggestion_overlay)} ref='suggestion_overlay'>
93 93 { fileterEmoji.map((emoji,i)=>{
94   - const url=`/img/emoji/${emoji}.png`;
  94 + const url=`./img/emoji/${emoji}.png`;
95 95 return (
96 96 <div key={i} onClick={self.choseEmoji.bind(self,i)} className={cx(s.banner,s.contact_name,s.item,s.line,i==shiftFocus?s.active:'')}>
97 97 <span>
... ... @@ -111,7 +111,7 @@ class MentionsInput extends React.Component {
111 111 fileterMention.map((mention,i)=>{
112 112 return(
113 113 <div key={i} onClick={self.choseMention.bind(self,i)} className={cx(s.banner,s.contact_name,s.item,s.line,i==shiftFocus?s.active:'')}>
114   - <img className={cx(s.is_leading,s.avatar,s.img_circle,s.img_24)} src="/img/user.jpg" />
  114 + <img className={cx(s.is_leading,s.avatar,s.img_circle,s.img_24)} src="./img/user.jpg" />
115 115 <span className={cx(s.name,s.text_overflow)}>{mention.name}</span>
116 116 </div>
117 117 )
... ...
... ... @@ -223,7 +223,7 @@ const replaceEmoji=(content='')=>{
223 223 results.map((result,i)=>{
224 224 const imgName=result.substring(1,result.lastIndexOf(":"));
225 225 if(allEmojiSheet.indexOf(imgName)!=-1){
226   - const imgTag='<img class="emoji_link" src="/img/emoji/'+imgName+'.png"> </img>';
  226 + const imgTag='<img class="emoji_link" src="./img/emoji/'+imgName+'.png"> </img>';
227 227 backHtml=backHtml.replace(result,imgTag);
228 228 }
229 229 })
... ...
... ... @@ -21,7 +21,7 @@ class RplyTextarea extends React.Component {
21 21 }
22 22 static defaultProps={
23 23 use:{
24   - user_image:"/img/user.jpg"
  24 + user_image:"./img/user.jpg"
25 25 }
26 26 }
27 27 changeMessage(e){
... ...
... ... @@ -69,7 +69,7 @@ class HRHead extends React.Component {
69 69 window.location.href='#/user/hrboard/personal/'+userInfo.user_id;
70 70 }
71 71 goSignOut(){
72   - window.location.href='/signOut';
  72 + window.location.href =`${__PREFIX__}signOut`;
73 73 }
74 74 goIntelligentPay(){
75 75 // window.location.href='#/user/hrboard/intelligentPay';
... ...
... ... @@ -135,7 +135,7 @@ class ElasticCheckboxGroupField extends React.Component {
135 135
136 136 }} style={{display:'inline-block',float:'left' ,cursor:'pointer'}} >
137 137 {/*<Icon type="plus" />*/}
138   - <img src="/img/add.png" alt="" style={{ width:'46px', height:'17px'}}/>
  138 + <img src="./img/add.png" alt="" style={{ width:'46px', height:'17px'}}/>
139 139 </div>
140 140 </Tooltip>
141 141 {showInput&&<div style={{display:'inline-block', float: 'left', marginLeft: '8px' ,marginTop: '5px'}}>
... ...
注册登录 后发表评论