chubiao vor 1 Jahr
Ursprung
Commit
6d89ae16c6
8 geänderte Dateien mit 980 neuen und 146 gelöschten Zeilen
  1. 13 3
      api/lr.js
  2. 55 0
      api/upload.js
  3. 96 0
      common/base64.js
  4. 73 66
      common/request.js
  5. 628 0
      common/sm4.js
  6. 3 0
      config.js
  7. 91 61
      pages/index/index.vue
  8. 21 16
      pages/lr/index.vue

+ 13 - 3
api/lr.js

@@ -2,10 +2,20 @@ import request from '@/common/request.js'
 
 
 // 添加客户
-export function save(data) {
+export function Save(data) {
 	return request({
-		url: 'organization/khjbxx',
+		url: '/organization/khjbxx',
 		method: 'post',
-		data: JSON.parse(JSON.stringify(data))
+		data: data
+	})
+}
+
+
+// 客户列表
+export function List(data) {
+	return request({
+		url: '/organization/khjbxx/list',
+		method: 'get',
+		data: data
 	})
 }

+ 55 - 0
api/upload.js

@@ -0,0 +1,55 @@
+import request from '@/common/request.js'
+import config from '../config.js'
+import {
+	getToken
+} from '../common/auth.js'
+
+/**
+ * 单一文件上传接口
+ * @file 文件地址
+ * @url 上传路径
+ * @formData 上传数据
+ */
+export function UploadOne(file, formData = {}) {
+	let header = {}
+	if (getToken()) {
+		header['Authorization'] = 'Bearer ' + getToken()
+	}
+	return new Promise((resolve, reject) => {
+		try {
+			uni.uploadFile({
+				url: config.service + '/file/upload',
+				filePath: file,
+				name: 'file',
+				formData: formData,
+				header: header,
+				success: (res) => {
+					console.log(res)
+					let r = JSON.parse(res.data)
+					resolve(r)
+				},
+				fail: (err) => {
+					console.log(err)
+					uni.showToast({
+						title: '服务器休息中,请稍后再试',
+						icon: "none",
+						position: "center",
+						duration: 3000
+					});
+				},
+				complete: (e) => {
+
+				}
+			})
+		} catch {
+			uni.showToast({
+				title: '网速不好哦!在试试',
+				icon: "none",
+				position: "center",
+				duration: 3000
+			})
+			uni.hideLoading()
+		}
+
+	})
+}

+ 96 - 0
common/base64.js

@@ -0,0 +1,96 @@
+(function(a) {
+	if ("object" == typeof exports && "undefined" != typeof module) module.exports = a();
+	else if ("function" == typeof define && define.amd) define([], a);
+	else {
+		var b;
+		b = "undefined" == typeof window ? "undefined" == typeof global ? "undefined" == typeof self ? this : self :
+			global : window, b.base64js = a()
+	}
+})(function() {
+	return function() {
+		function b(d, e, g) {
+			function a(j, i) {
+				if (!e[j]) {
+					if (!d[j]) {
+						var f = "function" == typeof require && require;
+						if (!i && f) return f(j, !0);
+						if (h) return h(j, !0);
+						var c = new Error("Cannot find module '" + j + "'");
+						throw c.code = "MODULE_NOT_FOUND", c
+					}
+					var k = e[j] = {
+						exports: {}
+					};
+					d[j][0].call(k.exports, function(b) {
+						var c = d[j][1][b];
+						return a(c || b)
+					}, k, k.exports, b, d, e, g)
+				}
+				return e[j].exports
+			}
+			for (var h = "function" == typeof require && require, c = 0; c < g.length; c++) a(g[c]);
+			return a
+		}
+		return b
+	}()({
+		"/": [function(a, b, c) {
+			'use strict';
+
+			function d(a) {
+				var b = a.length;
+				if (0 < b % 4) throw new Error("Invalid string. Length must be a multiple of 4");
+				var c = a.indexOf("="); - 1 === c && (c = b);
+				var d = c === b ? 0 : 4 - c % 4;
+				return [c, d]
+			}
+
+			function e(a, b, c) {
+				return 3 * (b + c) / 4 - c
+			}
+
+			function f(a) {
+				var b, c, f = d(a),
+					g = f[0],
+					h = f[1],
+					j = new m(e(a, g, h)),
+					k = 0,
+					n = 0 < h ? g - 4 : g;
+				for (c = 0; c < n; c += 4) b = l[a.charCodeAt(c)] << 18 | l[a.charCodeAt(c + 1)] <<
+					12 | l[a.charCodeAt(c + 2)] << 6 | l[a.charCodeAt(c + 3)], j[k++] = 255 & b >>
+					16, j[k++] = 255 & b >> 8, j[k++] = 255 & b;
+				return 2 === h && (b = l[a.charCodeAt(c)] << 2 | l[a.charCodeAt(c + 1)] >> 4, j[
+					k++] = 255 & b), 1 === h && (b = l[a.charCodeAt(c)] << 10 | l[a.charCodeAt(
+					c + 1)] << 4 | l[a.charCodeAt(c + 2)] >> 2, j[k++] = 255 & b >> 8, j[
+					k++] = 255 & b), j
+			}
+
+			function g(a) {
+				return k[63 & a >> 18] + k[63 & a >> 12] + k[63 & a >> 6] + k[63 & a]
+			}
+
+			function h(a, b, c) {
+				for (var d, e = [], f = b; f < c; f += 3) d = (16711680 & a[f] << 16) + (65280 & a[
+					f + 1] << 8) + (255 & a[f + 2]), e.push(g(d));
+				return e.join("")
+			}
+
+			function j(a) {
+				for (var b, c = a.length, d = c % 3, e = [], f = 16383, g = 0, j = c - d; g <
+					j; g += f) e.push(h(a, g, g + f > j ? j : g + f));
+				return 1 === d ? (b = a[c - 1], e.push(k[b >> 2] + k[63 & b << 4] + "==")) : 2 ===
+					d && (b = (a[c - 2] << 8) + a[c - 1], e.push(k[b >> 10] + k[63 & b >> 4] + k[
+						63 & b << 2] + "=")), e.join("")
+			}
+			c.byteLength = function(a) {
+				var b = d(a),
+					c = b[0],
+					e = b[1];
+				return 3 * (c + e) / 4 - e
+			}, c.toByteArray = f, c.fromByteArray = j;
+			for (var k = [], l = [], m = "undefined" == typeof Uint8Array ? Array : Uint8Array, n =
+					"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", o = 0, p = n
+					.length; o < p; ++o) k[o] = n[o], l[n.charCodeAt(o)] = o;
+			l[45] = 62, l[95] = 63
+		}, {}]
+	}, {}, [])("/")
+});

+ 73 - 66
common/request.js

@@ -1,78 +1,85 @@
-import { getToken } from './auth.js'
-import { toast } from './common.js'
+import {
+	getToken
+} from './auth.js'
+import {
+	toast
+} from './common.js'
 import config from '../config.js'
 
 const BASE_URL = config.service
 
 const request = config => {
-  config.header = config.header || {}
-  if (getToken()) {
-    config.header['Authorization'] = 'Bearer ' + getToken()
-  }
-  //  else {
-  //   config.header['Authorization'] = 'Bearer ' +
-  //     'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo3MDA0NDMsInVzZXJfa2V5IjoiNjFlMDVkMWItODY1Zi00MGIwLThiOWItM2VjY2I0ZGEzYjAwIiwidXNlcm5hbWUiOiJ5bGpnMjIwMjgyMDAzMiJ9.K16sZmP0X54BsIt5dpPBm5Jw8VLoQR3Vt1VJ8IpdRNChDwZNthxfCBAKPkUAilFtb5NuBIppH54dktTPSV5mNA'
-  // }
+	config.header = config.header || {}
+	if (getToken()) {
+		config.header['Authorization'] = 'Bearer ' + getToken()
+	}
+	//  else {
+	//   config.header['Authorization'] = 'Bearer ' +
+	//     'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo3MDA0NDMsInVzZXJfa2V5IjoiNjFlMDVkMWItODY1Zi00MGIwLThiOWItM2VjY2I0ZGEzYjAwIiwidXNlcm5hbWUiOiJ5bGpnMjIwMjgyMDAzMiJ9.K16sZmP0X54BsIt5dpPBm5Jw8VLoQR3Vt1VJ8IpdRNChDwZNthxfCBAKPkUAilFtb5NuBIppH54dktTPSV5mNA'
+	// }
 
-  uni.showLoading({
-    title: '请求中...'
-  })
+	uni.showLoading({
+		title: '请求中...'
+	})
+	console.log("请求:", config)
+	return new Promise((resolve, reject) => {
+		uni.request({
+			header: config.header,
+			method: config.method.toUpperCase() || 'GET',
+			dataType: 'json',
+			timeout: config.timeout || 10000,
+			url: BASE_URL + config.url,
+			data: config.data,
+		}).then((res) => {
+			console.log("请求成功:", res)
+			const code = res.statusCode || 200
+			const msg = res.data.msg || '未知错误,请反馈给管理员'
 
-  return new Promise((resolve, reject) => {
-    uni.request({
-      header: config.header,
-      method: config.method.toUpperCase() || 'GET',
-      dataType: 'json',
-      timeout: config.timeout || 10000,
-      url: BASE_URL + config.url,
-      data: config.data,
-    }).then((res) => {
-      const code = res.statusCode || 200
-      const msg = res.data.msg || '未知错误,请反馈给管理员'
+			// if (res.data.code === 500) {
+			//   uni.showToast({
+			//     icon: 'error',
+			//     title: '接口未知异常',
+			//   })
+			//   reject(msg)
+			// }
+			if (code === 401) {
+				uni.showModal({
+					title: '错误提示',
+					content: msg,
+					showCancel: false,
+					success: function(res) {
+						if (res.confirm) {
+							uni.reLaunch({
+								url: '/pages/login/login'
+							})
+						}
+					}
+				});
+				reject(msg)
+			} else if (code !== 200) {
+				toast(msg)
+				reject(code)
+			}
 
-      // if (res.data.code === 500) {
-      //   uni.showToast({
-      //     icon: 'error',
-      //     title: '接口未知异常',
-      //   })
-      //   reject(msg)
-      // }
-      if (code === 401) {
-        uni.showModal({
-          title: '错误提示',
-          content: msg,
-          showCancel: false,
-          success: function(res) {
-            if (res.confirm) {
-              uni.reLaunch({
-                url: '/pages/login/login'
-              })
-            }
-          }
-        });
-        reject(msg)
-      } else if (code !== 200) {
-        toast(msg)
-        reject(code)
-      }
-      
-      uni.hideLoading()
-      resolve(res.data)
-    }).catch(error => {
-      let { message } = error
-      if (message === 'Network Error') {
-        message = '后端接口连接异常'
-      } else if (message.includes('timeout')) {
-        message = '系统接口请求超时'
-      } else if (message.includes('Request failed with status code')) {
-        message = '系统接口' + message.substr(message.length - 3) + '异常'
-      }
+			uni.hideLoading()
+			resolve(res.data)
+		}).catch(error => {
+			let {
+				message
+			} = error
+			if (message === 'Network Error') {
+				message = '后端接口连接异常'
+			} else if (message.includes('timeout')) {
+				message = '系统接口请求超时'
+			} else if (message.includes('Request failed with status code')) {
+				message = '系统接口' + message.substr(message.length - 3) + '异常'
+			}
 
-      uni.hideLoading()
-      toast(message)
-      reject(error)
-    })
-  })
+			uni.hideLoading()
+			toast(message)
+			reject(error)
+		})
+	})
 }
 
 export default request

+ 628 - 0
common/sm4.js

@@ -0,0 +1,628 @@
+import base64js from "./base64.js"
+(function(r) {
+	if (typeof exports === "object" && typeof module !== "undefined") {
+		module.exports = r()
+	} else {
+		if (typeof define === "function" && define.amd) {
+			define([], r)
+		} else {
+			var e;
+			if (typeof window !== "undefined") {
+				e = window
+			} else {
+				if (typeof global !== "undefined") {
+					e = global
+				} else {
+					if (typeof self !== "undefined") {
+						e = self
+					} else {
+						e = this
+					}
+				}
+			}
+			e.base64js = r()
+		}
+	}
+})(function() {
+	var r, e, t;
+	return function r(e, t, n) {
+		function o(i, a) {
+			if (!t[i]) {
+				if (!e[i]) {
+					var u = typeof require == "function" && require;
+					if (!a && u) {
+						return u(i, !0)
+					}
+					if (f) {
+						return f(i, !0)
+					}
+					var d = new Error("Cannot find module '" + i + "'");
+					throw d.code = "MODULE_NOT_FOUND", d
+				}
+				var c = t[i] = {
+					exports: {}
+				};
+				e[i][0].call(c.exports, function(r) {
+					var t = e[i][1][r];
+					return o(t ? t : r)
+				}, c, c.exports, r, e, t, n)
+			}
+			return t[i].exports
+		}
+		var f = typeof require == "function" && require;
+		for (var i = 0; i < n.length; i++) {
+			o(n[i])
+		}
+		return o
+	}({
+		"/": [function(r, e, t) {
+			t.byteLength = c;
+			t.toByteArray = v;
+			t.fromByteArray = s;
+			var n = [];
+			var o = [];
+			var f = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
+			var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+			for (var a = 0, u = i.length; a < u; ++a) {
+				n[a] = i[a];
+				o[i.charCodeAt(a)] = a
+			}
+			o["-".charCodeAt(0)] = 62;
+			o["_".charCodeAt(0)] = 63;
+
+			function d(r) {
+				var e = r.length;
+				if (e % 4 > 0) {
+					throw new Error("Invalid string. Length must be a multiple of 4")
+				}
+				return r[e - 2] === "=" ? 2 : r[e - 1] === "=" ? 1 : 0
+			}
+
+			function c(r) {
+				return r.length * 3 / 4 - d(r)
+			}
+
+			function v(r) {
+				var e, t, n, i, a;
+				var u = r.length;
+				i = d(r);
+				a = new f(u * 3 / 4 - i);
+				t = i > 0 ? u - 4 : u;
+				var c = 0;
+				for (e = 0; e < t; e += 4) {
+					n = o[r.charCodeAt(e)] << 18 | o[r.charCodeAt(e + 1)] << 12 | o[r.charCodeAt(e +
+						2)] << 6 | o[r.charCodeAt(e + 3)];
+					a[c++] = n >> 16 & 255;
+					a[c++] = n >> 8 & 255;
+					a[c++] = n & 255
+				}
+				if (i === 2) {
+					n = o[r.charCodeAt(e)] << 2 | o[r.charCodeAt(e + 1)] >> 4;
+					a[c++] = n & 255
+				} else {
+					if (i === 1) {
+						n = o[r.charCodeAt(e)] << 10 | o[r.charCodeAt(e + 1)] << 4 | o[r.charCodeAt(
+							e + 2)] >> 2;
+						a[c++] = n >> 8 & 255;
+						a[c++] = n & 255
+					}
+				}
+				return a
+			}
+
+			function l(r) {
+				return n[r >> 18 & 63] + n[r >> 12 & 63] + n[r >> 6 & 63] + n[r & 63]
+			}
+
+			function h(r, e, t) {
+				var n;
+				var o = [];
+				for (var f = e; f < t; f += 3) {
+					n = (r[f] << 16) + (r[f + 1] << 8) + r[f + 2];
+					o.push(l(n))
+				}
+				return o.join("")
+			}
+
+			function s(r) {
+				var e;
+				var t = r.length;
+				var o = t % 3;
+				var f = "";
+				var i = [];
+				var a = 16383;
+				for (var u = 0, d = t - o; u < d; u += a) {
+					i.push(h(r, u, u + a > d ? d : u + a))
+				}
+				if (o === 1) {
+					e = r[t - 1];
+					f += n[e >> 2];
+					f += n[e << 4 & 63];
+					f += "=="
+				} else {
+					if (o === 2) {
+						e = (r[t - 2] << 8) + r[t - 1];
+						f += n[e >> 10];
+						f += n[e >> 4 & 63];
+						f += n[e << 2 & 63];
+						f += "="
+					}
+				}
+				i.push(f);
+				return i.join("")
+			}
+		}, {}]
+	}, {}, [])("/")
+});
+
+// const base64js = require('base64-js').Base64
+/**
+ * 国密SM4加密算法
+ */
+function SM4_Context() {
+	this.mode = 1;
+	this.isPadding = true;
+	this.sk = new Array(32);
+}
+
+function SM4() {
+	this.SM4_ENCRYPT = 1;
+	this.SM4_DECRYPT = 0;
+
+	var SboxTable = [0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05,
+		0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99,
+		0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62,
+		0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6,
+		0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8,
+		0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35,
+		0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87,
+		0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e,
+		0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1,
+		0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3,
+		0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f,
+		0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51,
+		0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8,
+		0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0,
+		0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84,
+		0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48
+	];
+
+	var FK = [0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc];
+
+	var CK = [0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,
+		0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,
+		0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,
+		0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9,
+		0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229,
+		0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299,
+		0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209,
+		0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279
+	];
+
+	this.GET_ULONG_BE = function(b, i) {
+		return (b[i] & 0xff) << 24 | ((b[i + 1] & 0xff) << 16) | ((b[i + 2] & 0xff) << 8) | (b[i + 3] & 0xff) &
+			0xffffffff;
+	}
+
+	this.PUT_ULONG_BE = function(n, b, i) {
+		var t1 = (0xFF & (n >> 24));
+		var t2 = (0xFF & (n >> 16));
+		var t3 = (0xFF & (n >> 8));
+		var t4 = (0xFF & (n));
+		b[i] = t1 > 128 ? t1 - 256 : t1;
+		b[i + 1] = t2 > 128 ? t2 - 256 : t2;
+		b[i + 2] = t3 > 128 ? t3 - 256 : t3;
+		b[i + 3] = t4 > 128 ? t4 - 256 : t4;
+	}
+
+	this.SHL = function(x, n) {
+		return (x & 0xFFFFFFFF) << n;
+	}
+
+	this.ROTL = function(x, n) {
+		var s = this.SHL(x, n);
+		var ss = x >> (32 - n);
+		return this.SHL(x, n) | x >> (32 - n);
+	}
+
+
+	this.sm4Lt = function(ka) {
+		var bb = 0;
+		var c = 0;
+		var a = new Array(4);
+		var b = new Array(4);
+		this.PUT_ULONG_BE(ka, a, 0);
+		b[0] = this.sm4Sbox(a[0]);
+		b[1] = this.sm4Sbox(a[1]);
+		b[2] = this.sm4Sbox(a[2]);
+		b[3] = this.sm4Sbox(a[3]);
+		bb = this.GET_ULONG_BE(b, 0);
+		c = bb ^ this.ROTL(bb, 2) ^ this.ROTL(bb, 10) ^ this.ROTL(bb, 18) ^ this.ROTL(bb, 24);
+		return c;
+	}
+
+	this.sm4F = function(x0, x1, x2, x3, rk) {
+		return x0 ^ this.sm4Lt(x1 ^ x2 ^ x3 ^ rk);
+	}
+
+	this.sm4CalciRK = function(ka) {
+		var bb = 0;
+		var rk = 0;
+		var a = new Array(4);
+		var b = new Array(4);
+		this.PUT_ULONG_BE(ka, a, 0);
+		b[0] = this.sm4Sbox(a[0]);
+		b[1] = this.sm4Sbox(a[1]);
+		b[2] = this.sm4Sbox(a[2]);
+		b[3] = this.sm4Sbox(a[3]);
+		bb = this.GET_ULONG_BE(b, 0);
+		rk = bb ^ this.ROTL(bb, 13) ^ this.ROTL(bb, 23);
+		return rk;
+	}
+
+
+
+	this.sm4Sbox = function(inch) {
+		var i = inch & 0xFF;
+		var retVal = SboxTable[i];
+		return retVal > 128 ? retVal - 256 : retVal;
+	}
+
+	this.sm4_setkey_enc = function(ctx, key) {
+		if (ctx == null) {
+			alert("ctx is null!");
+			return false;
+		}
+		if (key == null || key.length != 16) {
+			alert("key error!");
+			return false;
+		}
+		ctx.mode = this.SM4_ENCRYPT;
+		this.sm4_setkey(ctx.sk, key);
+
+	};
+	//生成解密密钥
+	this.sm4_setkey_dec = function(ctx, key) {
+		if (ctx == null) {
+			Error("ctx is null!");
+		}
+
+		if (key == null || key.length != 16) {
+			Error("key error!");
+		}
+
+		ctx.mode = this.SM4_DECRYPT;
+		this.sm4_setkey(ctx.sk, key);
+		ctx.sk = ctx.sk.reverse();
+	}
+
+
+	this.sm4_setkey = function(SK, key) {
+		var MK = new Array(4);
+		var k = new Array(36);
+		var i = 0;
+		MK[0] = this.GET_ULONG_BE(key, 0);
+		MK[1] = this.GET_ULONG_BE(key, 4);
+		MK[2] = this.GET_ULONG_BE(key, 8);
+		MK[3] = this.GET_ULONG_BE(key, 12);
+		k[0] = MK[0] ^ FK[0];
+		k[1] = MK[1] ^ FK[1];
+		k[2] = MK[2] ^ FK[2];
+		k[3] = MK[3] ^ FK[3];
+		for (var i = 0; i < 32; i++) {
+			k[(i + 4)] = (k[i] ^ this.sm4CalciRK(k[(i + 1)] ^ k[(i + 2)] ^ k[(i + 3)] ^ CK[i]));
+			SK[i] = k[(i + 4)];
+		}
+
+	}
+	this.padding = function(input, mode) {
+		if (input == null) {
+			return null;
+		}
+		var ret = null;
+		if (mode == this.SM4_ENCRYPT) {
+			var p = parseInt(16 - input.length % 16);
+			ret = input.slice(0);
+			for (var i = 0; i < p; i++) {
+				ret[input.length + i] = p;
+			}
+		} else {
+			var p = input[input.length - 1];
+			ret = input.slice(0, input.length - p);
+		}
+		return ret;
+	}
+	this.sm4_one_round = function(sk, input, output) {
+		var i = 0;
+		var ulbuf = new Array(36);
+		ulbuf[0] = this.GET_ULONG_BE(input, 0);
+		ulbuf[1] = this.GET_ULONG_BE(input, 4);
+		ulbuf[2] = this.GET_ULONG_BE(input, 8);
+		ulbuf[3] = this.GET_ULONG_BE(input, 12);
+		while (i < 32) {
+			ulbuf[(i + 4)] = this.sm4F(ulbuf[i], ulbuf[(i + 1)], ulbuf[(i + 2)], ulbuf[(i + 3)], sk[i]);
+			i++;
+		}
+		this.PUT_ULONG_BE(ulbuf[35], output, 0);
+		this.PUT_ULONG_BE(ulbuf[34], output, 4);
+		this.PUT_ULONG_BE(ulbuf[33], output, 8);
+		this.PUT_ULONG_BE(ulbuf[32], output, 12);
+
+	}
+
+	this.sm4_crypt_ecb = function(ctx, input) {
+		if (input == null) {
+			alert("input is null!");
+		}
+		if ((ctx.isPadding) && (ctx.mode == this.SM4_ENCRYPT)) {
+			input = this.padding(input, this.SM4_ENCRYPT);
+		}
+
+		var i = 0;
+		var length = input.length;
+		var bous = new Array();
+		for (; length > 0; length -= 16) {
+			var out = new Array(16);
+			var ins = input.slice(i * 16, (16 * (i + 1)));
+			this.sm4_one_round(ctx.sk, ins, out)
+			bous = bous.concat(out);
+			i++;
+		}
+
+		var output = bous;
+		if (ctx.isPadding && ctx.mode == this.SM4_DECRYPT) {
+			output = this.padding(output, this.SM4_DECRYPT);
+		}
+		for (var i = 0; i < output.length; i++) {
+			if (output[i] < 0) {
+				output[i] = output[i] + 256;
+			}
+		}
+		return output;
+	}
+
+	this.sm4_crypt_cbc = function(ctx, iv, input) {
+		if (iv == null || iv.length != 16) {
+			alert("iv error!");
+		}
+
+		if (input == null) {
+			alert("input is null!");
+		}
+
+		if (ctx.isPadding && ctx.mode == this.SM4_ENCRYPT) {
+			input = this.padding(input, this.SM4_ENCRYPT);
+		}
+
+		var i = 0;
+		var length = input.length;
+		var bous = new Array();
+		if (ctx.mode == this.SM4_ENCRYPT) {
+			var k = 0;
+			for (; length > 0; length -= 16) {
+				var out = new Array(16);
+				var out1 = new Array(16);
+				var ins = input.slice(k * 16, (16 * (k + 1)));
+
+				for (i = 0; i < 16; i++) {
+					out[i] = (ins[i] ^ iv[i]);
+				}
+				this.sm4_one_round(ctx.sk, out, out1);
+				iv = out1.slice(0, 16);
+				bous = bous.concat(out1);
+				k++;
+			}
+		} else {
+			var temp = [];
+			var k = 0;
+			for (; length > 0; length -= 16) {
+				var out = new Array(16);
+				var out1 = new Array(16);
+				var ins = input.slice(k * 16, (16 * (k + 1)));
+				temp = ins.slice(0, 16);
+				sm4_one_round(ctx.sk, ins, out);
+				for (i = 0; i < 16; i++) {
+					out1[i] = (out[i] ^ iv[i]);
+				}
+				iv = temp.slice(0, 16);
+				bous = bous.concat(out1);
+				k++;
+			}
+		}
+
+		var output = bous;
+		if (ctx.isPadding && ctx.mode == this.SM4_DECRYPT) {
+			output = this.padding(output, this.SM4_DECRYPT);
+		}
+
+		for (var i = 0; i < output.length; i++) {
+			if (output[i] < 0) {
+				output[i] = output[i] + 256;
+			}
+		}
+		return output;
+	}
+}
+
+
+function SM4Util() {
+
+	this.secretKey = "11HDESAAHIHHUGDZ";
+	//this.iv = "UISwD9fW6cFh9SNS";
+	this.iv = "";
+	//this.hexString = false;
+	//加密_ECB
+	this.encryptData_ECB = function(plainText) {
+		try {
+			var sm4 = new SM4();
+			var ctx = new SM4_Context();
+			ctx.isPadding = true;
+			ctx.mode = sm4.SM4_ENCRYPT;
+			var keyBytes = stringToByte(this.secretKey);
+			sm4.sm4_setkey_enc(ctx, keyBytes);
+			var encrypted = sm4.sm4_crypt_ecb(ctx, stringToByte(plainText));
+
+			var cipherText = base64js.fromByteArray(encrypted);
+			if (cipherText != null && cipherText.trim().length > 0) {
+				cipherText.replace(/(\s*|\t|\r|\n)/g, "");
+			}
+			return cipherText;
+		} catch (e) {
+			console.error(e);
+			return null;
+		}
+
+	}
+	//解密_ECB
+	this.decryptData_ECB = function(cipherText) {
+		try {
+			var sm4 = new SM4();
+			var ctx = new SM4_Context();
+			ctx.isPadding = true;
+			ctx.mode = sm4.SM4_DECRYPT;
+			var keyBytes = stringToByte(this.secretKey);
+			sm4.sm4_setkey_dec(ctx, keyBytes);
+			var decrypted = sm4.sm4_crypt_ecb(ctx, base64js.toByteArray(cipherText));
+			return utf8ByteToUnicodeStr(decrypted);
+		} catch (e) {
+			console.log(e)
+			console.error(e);
+			return null;
+		}
+	}
+
+	this.encryptData_CBC = function(plainText) {
+		try {
+			var sm4 = new SM4();
+			var ctx = new SM4_Context();
+			ctx.isPadding = true;
+			ctx.mode = sm4.SM4_ENCRYPT;
+
+			var keyBytes = stringToByte(this.secretKey);
+			var ivBytes = stringToByte(this.iv);
+
+			sm4.sm4_setkey_enc(ctx, keyBytes);
+			var encrypted = sm4.sm4_crypt_cbc(ctx, ivBytes, stringToByte(plainText));
+			var cipherText = base64js.fromByteArray(encrypted);
+			if (cipherText != null && cipherText.trim().length > 0) {
+				cipherText.replace(/(\s*|\t|\r|\n)/g, "");
+			}
+			return cipherText;
+		} catch (e) {
+			console.error(e);
+			return null;
+		}
+	}
+
+	var stringToByte = function(str) {
+		var bytes = new Array();
+		var len, c;
+		len = str.length;
+		for (var i = 0; i < len; i++) {
+			c = str.charCodeAt(i);
+			if (c >= 0x010000 && c <= 0x10FFFF) {
+				bytes.push(((c >> 18) & 0x07) | 0xF0);
+				bytes.push(((c >> 12) & 0x3F) | 0x80);
+				bytes.push(((c >> 6) & 0x3F) | 0x80);
+				bytes.push((c & 0x3F) | 0x80);
+			} else if (c >= 0x000800 && c <= 0x00FFFF) {
+				bytes.push(((c >> 12) & 0x0F) | 0xE0);
+				bytes.push(((c >> 6) & 0x3F) | 0x80);
+				bytes.push((c & 0x3F) | 0x80);
+			} else if (c >= 0x000080 && c <= 0x0007FF) {
+				bytes.push(((c >> 6) & 0x1F) | 0xC0);
+				bytes.push((c & 0x3F) | 0x80);
+			} else {
+				bytes.push(c & 0xFF);
+			}
+
+		}
+		// console.log('bytes: '+bytes)
+		return bytes;
+	}
+
+
+	var byteToString = function(arr) {
+		if (typeof arr === 'string') {
+			return arr;
+		}
+		var str = '',
+			_arr = arr;
+		for (var i = 0; i < _arr.length; i++) {
+			var one = _arr[i].toString(2),
+				v = one.match(/^1+?(?=0)/);
+			if (v && one.length == 8) {
+				var bytesLength = v[0].length;
+				var store = _arr[i].toString(2).slice(7 - bytesLength);
+				for (var st = 1; st < bytesLength; st++) {
+					store += _arr[st + i].toString(2).slice(2);
+				}
+				str += String.fromCharCode(parseInt(store, 2));
+				i += bytesLength - 1;
+			} else {
+				str += String.fromCharCode(_arr[i]);
+			}
+		}
+		return str;
+	}
+
+	function utf8ByteToUnicodeStr(utf8Bytes) {
+		var unicodeStr = "";
+		for (var pos = 0; pos < utf8Bytes.length;) {
+			var flag = utf8Bytes[pos];
+			var unicode = 0;
+			if ((flag >>> 7) === 0) {
+				unicodeStr += String.fromCharCode(utf8Bytes[pos]);
+				pos += 1;
+
+			} else if ((flag & 0xFC) === 0xFC) {
+				unicode = (utf8Bytes[pos] & 0x3) << 30;
+				unicode |= (utf8Bytes[pos + 1] & 0x3F) << 24;
+				unicode |= (utf8Bytes[pos + 2] & 0x3F) << 18;
+				unicode |= (utf8Bytes[pos + 3] & 0x3F) << 12;
+				unicode |= (utf8Bytes[pos + 4] & 0x3F) << 6;
+				unicode |= (utf8Bytes[pos + 5] & 0x3F);
+				unicodeStr += String.fromCharCode(unicode);
+				pos += 6;
+
+			} else if ((flag & 0xF8) === 0xF8) {
+				unicode = (utf8Bytes[pos] & 0x7) << 24;
+				unicode |= (utf8Bytes[pos + 1] & 0x3F) << 18;
+				unicode |= (utf8Bytes[pos + 2] & 0x3F) << 12;
+				unicode |= (utf8Bytes[pos + 3] & 0x3F) << 6;
+				unicode |= (utf8Bytes[pos + 4] & 0x3F);
+				unicodeStr += String.fromCharCode(unicode);
+				pos += 5;
+
+			} else if ((flag & 0xF0) === 0xF0) {
+				unicode = (utf8Bytes[pos] & 0xF) << 18;
+				unicode |= (utf8Bytes[pos + 1] & 0x3F) << 12;
+				unicode |= (utf8Bytes[pos + 2] & 0x3F) << 6;
+				unicode |= (utf8Bytes[pos + 3] & 0x3F);
+				unicodeStr += String.fromCharCode(unicode);
+				pos += 4;
+
+			} else if ((flag & 0xE0) === 0xE0) {
+				unicode = (utf8Bytes[pos] & 0x1F) << 12;;
+				unicode |= (utf8Bytes[pos + 1] & 0x3F) << 6;
+				unicode |= (utf8Bytes[pos + 2] & 0x3F);
+				unicodeStr += String.fromCharCode(unicode);
+				pos += 3;
+
+			} else if ((flag & 0xC0) === 0xC0) { //110
+				unicode = (utf8Bytes[pos] & 0x3F) << 6;
+				unicode |= (utf8Bytes[pos + 1] & 0x3F);
+				unicodeStr += String.fromCharCode(unicode);
+				pos += 2;
+
+			} else {
+				unicodeStr += String.fromCharCode(utf8Bytes[pos]);
+				pos += 1;
+			}
+		}
+		return unicodeStr;
+	}
+};
+module.exports = {
+	s4: new SM4Util()
+}

+ 3 - 0
config.js

@@ -1,6 +1,9 @@
 const build = {
 	"service" : "http://121.36.73.159:807/prod-api",
+	// "service" : "http://10.16.9.114:8080",
 	// "service" : "http://10.16.4.5/dev-api",
+	"baseUrl":"http://121.36.73.159:807",
+	"head":"/uploadPath/2024/01/16/profile.png",
 	"gaodeKey":"e6b77a8d407630b07f915c0f40eebd15"
 }
 

+ 91 - 61
pages/index/index.vue

@@ -1,42 +1,72 @@
 <template>
-  <view class="page-main">
-    <next-indexed-xlist :dataList="dataList" :showAvatar="true" isInterlock @itemclick="itemclick">
-      <!--这是默认插槽,额外添加部分-->
-      <!--    <view class="content-block">
+	<view class="page-main">
+		<next-indexed-xlist :dataList="dataList" :showAvatar="true" isInterlock @itemclick="itemclick">
+			<!--这是默认插槽,额外添加部分-->
+			<!--    <view class="content-block">
                 <view class="title"><text>历史记录:</text></view>
                 <view class="btn"><text>朝阳区</text></view>
                 <view class="btn"><text>东城区</text></view>
                 <view class="btn"><text>海淀区</text></view>
             </view> -->
-    </next-indexed-xlist>
-    <navigator url="/pages/lr/index">
-      <image src="../../static/image/add.png" class="floating-button"></image>
-    </navigator>
-  </view>
+		</next-indexed-xlist>
+		<navigator url="/pages/lr/index">
+			<image src="../../static/image/add.png" class="floating-button"></image>
+		</navigator>
+	</view>
 </template>
 
 <script>
-  export default {
-    data() {
-      return {
-        dataList: [{
-          id: '1',
-          name: '刘**',
-          phone: '181****5576',
-          img: 'https://img1.baidu.com/it/u=1016138010,1907110459&fm=253&fmt=auto&app=138&f=JPEG?w=300&h=300'
-				}]
-      }
+	import {
+		List
+	} from '@/api/lr.js'
+	import config from '@/config.js'
+	import {
+		s4
+	} from '@/common/sm4.js'
+	export default {
+		data() {
+			return {
+				form: {
+					pageNum: 1,
+					pageSize: 9999,
+				},
+				dataList: [
+					// 	{
+					// 	id: '1',
+					// 	name: '刘**',
+					// 	phone: '181****5576',
+					// 	img: 'https://img1.baidu.com/it/u=1016138010,1907110459&fm=253&fmt=auto&app=138&f=JPEG?w=300&h=300'
+					// },
+				]
+			}
 
-    },
-    computed: {},
-    onLoad() {},
-    onReady() {},
-    methods: {
-      itemclick(e) {
-        console.log('点击列表回调:', e)
-      }
-    }
-  }
+		},
+		mounted() {
+			this.getList()
+		},
+		onLoad() {},
+		onReady() {},
+		methods: {
+			getList() {
+				List(this.form).then(res => {
+					res.rows.map(e => {
+						console.log(e)
+						this.dataList.push({
+							id: e.id,
+							name: s4.decryptData_ECB(e.xm),
+							phone: e.sjhm,
+							img: e.tx ? config.baseUrl + e.tx : config.baseUrl + config.head
+						})
+					})
+
+					console.log("wwwwwwwwwww", this.dataList)
+				})
+			},
+			itemclick(e) {
+				console.log('点击列表回调:', e)
+			}
+		}
+	}
 </script>
 
 
@@ -44,40 +74,40 @@
 
 
 <style lang="scss" scoped>
-  .content-block {
-    display: flex;
-    flex-direction: row;
-    justify-content: flex-start;
-    background-color: #fff;
+	.content-block {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		background-color: #fff;
 
-    .title {
-      color: #333;
-      padding: 20rpx;
-      margin-right: 20rpx;
-      display: flex;
-      flex-direction: column;
-      justify-content: center;
-    }
+		.title {
+			color: #333;
+			padding: 20rpx;
+			margin-right: 20rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+		}
 
-    .btn {
-      color: #ccc;
-      padding: 10rpx;
-      border: 1rpx solid #ccc;
-      border-radius: 10rpx;
-      margin: 20rpx 10rpx;
-      font-size: 28rpx;
-      display: flex;
-      flex-direction: column;
-      justify-content: center;
+		.btn {
+			color: #ccc;
+			padding: 10rpx;
+			border: 1rpx solid #ccc;
+			border-radius: 10rpx;
+			margin: 20rpx 10rpx;
+			font-size: 28rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
 
-    }
-  }
+		}
+	}
 
-  .floating-button {
-    position: fixed;
-    bottom: 20px;
-    right: 20px;
-    width: 120rpx;
-    height: 120rpx;
-  }
+	.floating-button {
+		position: fixed;
+		bottom: 20px;
+		right: 20px;
+		width: 120rpx;
+		height: 120rpx;
+	}
 </style>

+ 21 - 16
pages/lr/index.vue

@@ -11,8 +11,7 @@
 				<uni-forms ref="baseForm" :modelValue="baseFormData" :rules="rules">
 					<view v-if="active==0">
 						<uni-forms-item label="照片">
-							<uni-file-picker v-model="baseFormData.tx" limit="1" fileMediatype="image" @select="select"
-								@progress="progress" @success="success" @fail="fail" />
+							<uni-file-picker limit="1" fileMediatype="image" @select="select" />
 						</uni-forms-item>
 						<uni-forms-item label="姓名" required name="xm">
 							<uni-easyinput v-model="baseFormData.xm" placeholder="请输入姓名" />
@@ -223,7 +222,10 @@
 	import amapFile from "@/libs/amap-wx.130.js";
 	import config from "../../config.js";
 	import {
-		save
+		UploadOne
+	} from '@/api/upload.js';
+	import {
+		Save
 	} from '@/api/lr.js'
 	export default {
 		data() {
@@ -710,6 +712,11 @@
 			})
 		},
 		methods: {
+			// 获取上传状态
+			async select(e) {
+				let ossfilePath = await UploadOne(e.tempFilePaths[0], {})
+				this.baseFormData.tx = ossfilePath.data.url
+			},
 			addbhxx() {
 
 			},
@@ -772,23 +779,21 @@
 				return str.substring(0, index) + newChar + str.substring(index + 1);
 			},
 			// 数组转10进制
-			formatInt10(value,like) {
+			formatInt10(value, like) {
 				let len = like.length
 				if (value.length == 0) {
 					this.baseFormData.xqah = like
 				} else {
 					value.forEach(e => {
-						
+
 						like = this.replaceStringByIndex(like, '0', '1', e)
-						if(like.length != len){
-							for(let i = 0;i<len-like.length;i++){
-								like += '0'	
-							}	
+						if (like.length != len) {
+							for (let i = 0; i < len - like.length; i++) {
+								like += '0'
+							}
 						}
-						console.log("qqqqq",e,like)
 					})
 				}
-				console.log("wwwwwwwwwwwwww",like.toString().split('').reverse().join(''))
 				return parseInt(like.toString().split('').reverse().join(''), 2)
 			},
 			// 数组转2进制
@@ -809,8 +814,8 @@
 					if (isSave) {
 						this.bsFormatFrom()
 						console.log("入参", this.baseFormData)
-						save(this.baseFormData).then(r => {
-							if (r.id) {
+						Save(this.baseFormData).then(r => {
+							if (r.data.id) {
 								uni.showToast({
 									title: `保存成功!`,
 									duration: 2000,
@@ -848,9 +853,9 @@
 				})
 			},
 			bsFormatFrom() {
-				this.baseFormData.tkfl = this.formatInt10(this.baseFormData.tkflData,'00000000')
-				this.baseFormData.xqah = this.formatInt10(this.baseFormData.xqahData,'000000000')
-				this.baseFormData.jntc = this.formatInt10(this.baseFormData.jntcData,'000000')
+				this.baseFormData.tkfl = this.formatInt10(this.baseFormData.tkflData, '00000000')
+				this.baseFormData.xqah = this.formatInt10(this.baseFormData.xqahData, '000000000')
+				this.baseFormData.jntc = this.formatInt10(this.baseFormData.jntcData, '000000')
 				if (this.baseFormData.csrq) {
 					this.baseFormData.csrq = this.baseFormData.csrq.replace('-', '')
 				}