admin.js 6.0 KB

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