diff --git a/src/utils/aes_new.js b/src/utils/aes_new.js new file mode 100644 index 0000000..8c15619 --- /dev/null +++ b/src/utils/aes_new.js @@ -0,0 +1,36 @@ +// src/utils/aesUtil.js +import CryptoJS from 'crypto-js' + +/** + * AES解密函数 + * @param {string} word - 需要解密的字符串 + * @returns {string} 解密后的明文 + */ +export function bnsCloudDecrypt(word) { + const key = CryptoJS.enc.Utf8.parse("bonus@cloud@2025") + const decrypt = CryptoJS.AES.decrypt(word, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return CryptoJS.enc.Utf8.stringify(decrypt).toString() +} + +/** + * AES加密函数 + * @param {string} word - 需要加密的明文 + * @returns {string} 加密后的字符串 + */ +export function bnsCloudEncrypt(word) { + const key = CryptoJS.enc.Utf8.parse("bonus@cloud@2025") + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() +} + +export default { + bnsCloudDecrypt, + bnsCloudEncrypt +} diff --git a/src/views/dataManage/product-center/components/addAndEditForm.vue b/src/views/dataManage/product-center/components/addAndEditForm.vue index c55f18c..48e93fa 100644 --- a/src/views/dataManage/product-center/components/addAndEditForm.vue +++ b/src/views/dataManage/product-center/components/addAndEditForm.vue @@ -1,723 +1,783 @@ diff --git a/src/views/dataManage/product-center/index.vue b/src/views/dataManage/product-center/index.vue index f8025eb..104791e 100644 --- a/src/views/dataManage/product-center/index.vue +++ b/src/views/dataManage/product-center/index.vue @@ -114,7 +114,7 @@ {{ scope.row[column.prop] }} @@ -179,6 +179,7 @@ import { } from '@/api/dataManage/product-center' import DialogModel from '@/components/DialogModel' import AddAndEditForm from './components/addAndEditForm.vue' +import {bnsCloudEncrypt, bnsCloudDecrypt} from '@/utils/aes_new' export default { name: 'ProductCenter', dicts: ['tb_product_type'], @@ -236,6 +237,30 @@ export default { } }, methods: { + + getEncryptedUrl(row) { + const { linkUrl, linkUser, linkPassword } = row; + + // 如果没有链接,返回空字符串 + if (!linkUrl) return ''; + + // 如果存在用户名和密码,则进行加密并拼接到URL中 + if (linkUser && linkPassword) { + // 先拼接成 username=admin&password=123 这样的字符串 + const authString = `username=${linkUser}&password=${linkPassword}`; + + // 对拼接后的字符串进行加密 + const encryptedParams = bnsCloudEncrypt(authString); + + // 将加密后的参数拼接到URL中 + const separator = linkUrl.includes('?') ? '&' : '?'; + return `${linkUrl}${separator}params=${encodeURIComponent(encryptedParams)}`; + } + + // 如果没有用户名和密码,直接返回原始链接 + return linkUrl; + }, + // 获取列表 async getProductCenterListFun() { const res = await getProductCenterListAPI(this.queryParams) diff --git a/src/views/publicService/proMaterials/index.vue b/src/views/publicService/proMaterials/index.vue index 7de4bea..bda94e0 100644 --- a/src/views/publicService/proMaterials/index.vue +++ b/src/views/publicService/proMaterials/index.vue @@ -195,7 +195,7 @@ export default { // 获取产品卡片宽度 getItemWidth() { - this.itemWidth = (this.$refs.servicesGrid?.clientWidth - 120) / 4 + this.itemWidth = (this.$refs.servicesGrid?.clientWidth - 280) / 4 }, // 初始化左侧菜单列表 @@ -481,6 +481,7 @@ export default { .services-grid { height: 240px; /* 给子元素设置固定高度以便测试滚动 */ + width: 365px; display: flex; flex-direction: column; align-items: center; diff --git a/src/views/publicService/productCenter/index.vue b/src/views/publicService/productCenter/index.vue index f4a4db5..7ca4408 100644 --- a/src/views/publicService/productCenter/index.vue +++ b/src/views/publicService/productCenter/index.vue @@ -46,7 +46,7 @@ > 访问演示 -
查看详情
+
查看详情
@@ -54,7 +54,9 @@