admin.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. // 引用工具类
  2. const utils = require('../common/util.js');
  3. //服务接口访问配置
  4. var config = {
  5. // sysweburl: "https://www.zgsafesp.cn",
  6. sysweburl: "http://110.188.24.28:50200", // 测试
  7. // sysweburl: "http://110.188.24.28:50300", // 开发
  8. upfileurl: "http://110.188.24.28:50120/file/upload", // 测试
  9. // upfileurl: "http://171.94.154.2:50105/hlfs/file/upload", // 正式
  10. getfileurl: "http://110.188.24.28:50120", // 测试
  11. // getfileurl: "http://171.94.154.2:50105/hlfs", // 正式
  12. // upuserimgurl: "/zg12345/SSP.asmx/UserImg"
  13. }
  14. // 服务器返回字段
  15. var response = { //自定义响应字段
  16. statusName: 'code', //数据状态的字段名称
  17. msgName: 'msg', //状态信息的字段名称
  18. dataName: 'data' ,//数据详情的字段名称
  19. }
  20. // http状态码
  21. var statusCode = {
  22. ok: 200, //数据状态一切正常的状态码
  23. logout: 401, //登录状态失效的状态码
  24. }
  25. //录音对象
  26. const recorderManager = uni.getRecorderManager();
  27. //播放对象
  28. const innerAudioContext = uni.createInnerAudioContext();
  29. // 全局变量请求头
  30. var _token = ''; // token
  31. // 登录失效提示方法
  32. const logErrTip = () => {
  33. uni.hideLoading();
  34. uni.showModal({
  35. title: '登录提示',
  36. content: '您未授权登录,请授权',
  37. showCancel: true,
  38. confirmText: '确定',
  39. success: (e) => {
  40. if (e.confirm) {
  41. // 获取微信登录授权
  42. uni.switchTab({
  43. url: "/pages/Index/Mine"
  44. })
  45. }
  46. },
  47. fail: () => {},
  48. complete: () => {}
  49. })
  50. }
  51. // 自动登录
  52. const autoLogin = (fun) => {
  53. reqDirect({
  54. method: 'GET',
  55. url: '/api/v1/Identity/third/refresh',
  56. data: {openId: uni.getStorageSync('userInfo').openID}
  57. }).then(res => {
  58. saveUserInfo(res, function(){
  59. typeof fun === 'function' && fun();
  60. });
  61. }, err => {
  62. utils.msg(err, function() {
  63. typeof fun === 'function' && fun();
  64. });
  65. });
  66. }
  67. // 缓存登录用户信息
  68. const saveUserInfo = (data, fun) => {
  69. _token = data.token;
  70. console.log(data);
  71. uni.setStorageSync('userInfo', {
  72. openID: data.openId,
  73. userName: data.userName || '',
  74. userImg: '',
  75. userTel: data.phoneNumber || '',
  76. userType: data.userType || '1', // 登录用户类型 1:市民 2:网格员
  77. YQCode: data.invitationCode, // 邀请码
  78. isVolunteer: data.isVolunteer // 是否为志愿者
  79. })
  80. typeof fun === 'function' && fun();
  81. }
  82. // 调用数据请求入口方法——需验证是否登录
  83. const req = (_options, hideLoading) => {
  84. if (!(hideLoading || false)) {
  85. uni.showLoading({
  86. title: '请求中...',
  87. mask: true
  88. })
  89. }
  90. // 获取当前缓存的微信openID
  91. let openID = uni.getStorageSync('userInfo').openID;
  92. // 异步请求数据
  93. return new Promise((resolve, reject) => {
  94. if (!openID) { // 检查openID是否存在
  95. // 登录失效提示方法
  96. logErrTip();
  97. reject();
  98. } else {
  99. if(!_token){ //检查token是否存在
  100. // 不存在-自动登录
  101. autoLogin(function(){
  102. ajax(resolve, reject, _options);
  103. })
  104. }else{
  105. // 存在-直接请求
  106. ajax(resolve, reject, _options);
  107. }
  108. }
  109. })
  110. }
  111. // 调用数据请求入口方法——不用验证是否登录
  112. const reqDirect = (_options, hideLoading) => {
  113. if (!(hideLoading || false)) {
  114. uni.showLoading({
  115. title: '请求中...',
  116. mask: true
  117. })
  118. }
  119. // 异步请求数据
  120. return new Promise((resolve, reject) => {
  121. ajax(resolve, reject, _options);
  122. })
  123. }
  124. /* *
  125. * 请求接口数据
  126. * */
  127. const ajax = (resolve, reject, _options) => {
  128. uni.request({
  129. method: _options.method || 'POST',
  130. url: config.sysweburl + _options.url,
  131. data: _options.data || {},
  132. header: {
  133. // 'Content-Type': _options.contentType || 'application/x-www-form-urlencoded; charset=UTF-8',
  134. 'Authorization': 'Bearer ' + _token
  135. },
  136. success: function(res) {
  137. console.log(res);
  138. uni.hideLoading();
  139. if(res.statusCode == statusCode.ok){
  140. let jsonResult = {};
  141. jsonResult[response.statusName] = res.data.code;
  142. jsonResult[response.msgName] = res.data.error;
  143. jsonResult[response.dataName] = res.data.result;
  144. if (jsonResult[response.statusName] == 0){
  145. resolve(jsonResult[response.dataName]);
  146. }else {
  147. if (reject) {
  148. reject(jsonResult[response.msgName]);
  149. } else {
  150. utils.msg(jsonResult[response.msgName]);
  151. }
  152. }
  153. }else if (res.statusCode == statusCode.logout){
  154. // 登录失效提示方法
  155. logErrTip()
  156. }else {
  157. utils.msg("服务异常,请稍后重试");
  158. }
  159. },
  160. fail: function() {
  161. uni.hideLoading();
  162. utils.msg('服务异常,请稍后重试!');
  163. }
  164. });
  165. }
  166. // 附件上传
  167. const onUploadFiles = (files, fun) => {
  168. uni.showLoading({
  169. title: '上传中,请稍后',
  170. mask: true
  171. })
  172. let pArr = [];
  173. if (files && files.length > 0) {
  174. files.forEach((file, i, array) => {
  175. pArr.push(new Promise(function(resolve, reject) {
  176. onUpLoadSingleFile(file, "uploadkey" + i, resolve, reject);
  177. }))
  178. });
  179. Promise.all(pArr).then(res => {
  180. let strRes = res.toString();
  181. uni.hideLoading();
  182. typeof fun === 'function' && fun(strRes);
  183. }, err => {
  184. uni.hideLoading();
  185. util.msg(err.msg);
  186. })
  187. } else {
  188. uni.hideLoading();
  189. typeof fun === 'function' && fun();
  190. }
  191. }
  192. // 单个附件上传
  193. const onUpLoadSingleFile = (file, key, resolve, reject) => {
  194. let fileObj = {
  195. fileType: file.fileType,
  196. msg: ''
  197. };
  198. switch (fileObj.fileType) {
  199. case 'vioce':
  200. fileObj.msg = '录音上传失败';
  201. break;
  202. case 'image':
  203. fileObj.msg = '图片上传失败';
  204. break;
  205. case 'video':
  206. fileObj.msg = '视频上传失败';
  207. break;
  208. default:
  209. break;
  210. }
  211. uni.uploadFile({
  212. url: config.upfileurl,
  213. filePath: file.tempFilePath,
  214. name: key,
  215. // formData: {
  216. // Code: 'ZGSSP20240102',
  217. // Duration: file.duration || ''
  218. // },
  219. timeout: 10000,
  220. success: res => {
  221. if (res.data) {
  222. var data = res.data;
  223. try {
  224. data = JSON.parse(data);
  225. if (data[0].code == '1') {
  226. return resolve(data[0].data[0].fid);
  227. } else {
  228. return reject(fileObj)
  229. }
  230. } catch (d) {
  231. return reject(fileObj)
  232. }
  233. } else {
  234. return reject(fileObj)
  235. }
  236. },
  237. fail: res => {
  238. return reject(fileObj)
  239. },
  240. })
  241. }
  242. //暴露模块
  243. module.exports = {
  244. config: config,
  245. req: req,
  246. reqDirect: reqDirect,
  247. onUploadFiles: onUploadFiles,
  248. recorderManager: recorderManager,
  249. innerAudioContext: innerAudioContext,
  250. saveUserInfo: saveUserInfo
  251. }