Эх сурвалжийг харах

Merge branch 'cheney' into dev

WanGxC 7 сар өмнө
parent
commit
b2f31d2811

+ 2 - 2
.env.development

@@ -3,9 +3,9 @@ ENV='development'
 
 # 本地环境接口地址
 # VITE_API_URL = 'http://127.0.0.1:8000'
- VITE_API_URL='http://192.168.1.225:9090/'
+# VITE_API_URL='http://192.168.1.225:9090/'
 # VITE_API_URL = 'http://192.168.1.22:8080/'
-# VITE_API_URL='http://asset.zositechc.cn'
+ VITE_API_URL='http://asset.zositechc.cn'
 
 # 是否启用按钮权限
 VITE_PM_ENABLED=true

+ 2 - 0
index.html

@@ -27,5 +27,7 @@
         })();
     </script>
     <script type="module" src="/src/main.ts"></script>
+    <script src="https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script>
+    <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
 	</body>
 </html>

+ 7 - 0
package-lock.json

@@ -32,6 +32,7 @@
 				"element-tree-line": "^0.2.1",
 				"font-awesome": "^4.7.0",
 				"js-cookie": "^3.0.1",
+				"js-sha1": "^0.7.0",
 				"js-table2excel": "^1.0.3",
 				"jsplumb": "^2.15.6",
 				"lodash-es": "^4.17.21",
@@ -6941,6 +6942,12 @@
 				"url": "https://opencollective.com/js-sdsl"
 			}
 		},
+		"node_modules/js-sha1": {
+			"version": "0.7.0",
+			"resolved": "https://registry.npmmirror.com/js-sha1/-/js-sha1-0.7.0.tgz",
+			"integrity": "sha512-oQZ1Mo7440BfLSv9TX87VNEyU52pXPVG19F9PL3gTgNt0tVxlZ8F4O6yze3CLuLx28TxotxvlyepCNaaV0ZjMw==",
+			"license": "MIT"
+		},
 		"node_modules/js-table2excel": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmmirror.com/js-table2excel/-/js-table2excel-1.1.2.tgz",

+ 1 - 0
package.json

@@ -33,6 +33,7 @@
 		"element-tree-line": "^0.2.1",
 		"font-awesome": "^4.7.0",
 		"js-cookie": "^3.0.1",
+		"js-sha1": "^0.7.0",
 		"js-table2excel": "^1.0.3",
 		"jsplumb": "^2.15.6",
 		"lodash-es": "^4.17.21",

+ 9 - 0
src/views/test/api.ts

@@ -0,0 +1,9 @@
+import { request } from '/@/utils/service';
+
+
+export function getTicket() {
+  return request({
+    url: '/api/system/jsapi_ticket/',
+    method: 'GET',
+  });
+}

+ 59 - 12
src/views/test/index.vue

@@ -1,20 +1,67 @@
 <script setup>
+import { getTicket } from '/@/views/test/api';
+import sha1 from 'js-sha1';
 
-// import PropsTest from './propsTest.vue';
-// import EditDrawer from '/@/views/shop-information/components/EditDrawer.vue';
+// 生成时间戳
+const stamp = Date.now();
+const URL = 'http://asset.zositechc.cn/web/';
+let jsapiTicket = '';
+let signatureStr = '';
+let signature = '';
 
-// const text = ref('1');
-// const isOpen = ref(false); // 定义 isOpen
+// 生成随机字符串
+function generateRandomString(length) {
+  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+  let result = '';
+  for (let i = 0; i < length; i++) {
+    result += characters.charAt(Math.floor(Math.random() * characters.length));
+  }
+  return result;
+}
+
+// 异步获取 jsapiTicket
+async function fetchJsapiTicket() {
+  try {
+    const response = await getTicket();
+    jsapiTicket = response.data;
+    generateSignatureStr(jsapiTicket);
+  } catch (error) {
+    console.error('Error==>', error);
+  }
+}
+
+// 生成 signatureStr 字符串
+function generateSignatureStr(ticket) {
+  const nonceStr = generateRandomString(10);
+  signatureStr = `jsapi_ticket=${ticket}&noncestr=${nonceStr}&timestamp=${stamp}&url=${URL}`;
+  // console.log("(index.vue: 37)=> signatureStr", signatureStr);
+  signature = sha1(signatureStr);
+  // console.log("(index.vue: 39)=> signature", signature);
+}
+
+// 在组件挂载时获取 jsapiTicket
+onMounted(async () => {
+  await fetchJsapiTicket();
+});
+
+// 配置企业微信 JS-SDK
+window.wx.config({
+  beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+  debug: true, // 在测试没问题之后,关闭debug模式,防止弹窗
+  appId: 'ww467ec1685e8262e6', // 必填,企业微信的corpID
+  timestamp: stamp, // 必填,生成签名的时间戳
+  nonceStr: generateRandomString(10), // 必填,生成签名的随机串
+  signature: signature, // 假设签名已经从后端获取
+  jsApiList: ['agentConfig', 'saveApprovalSelectedItems', 'getApprovalSelectedItems'], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
+});
 //
-// function handleOpen() {
-//   isOpen.value = true; // 点击按钮后打开 dialog
-// }
+// 错误处理
+window.wx.error((e) => {
+  e && alert(JSON.stringify(e));
+});
 </script>
 
+
 <template>
-  <!--<el-button @click="handleOpen">确定</el-button>-->
-  
-  <!--&lt;!&ndash; 传递 isOpen 给子组件 &ndash;&gt;-->
-  <!--&lt;!&ndash;<PropsTest :text="text" v-model="isOpen" />&ndash;&gt;-->
-  <!--<el-tag type="warning"></el-tag>-->
+
 </template>