From d600bbc25fb2e306d92cffafe2d7aa601daa536b Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 12 十二月 2025 11:02:30 +0800
Subject: [PATCH] #AI

---
 src/main/webapp/static/js/common.js |   94 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 92 insertions(+), 2 deletions(-)

diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 2009a2e..f2f0be2 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/jswcs";
+var baseUrl = "/wcs";
 
 // 璧嬪��
 function setVal(el, val) {
@@ -140,7 +140,7 @@
                     if (res.code === 200){
                         callback(res);
                     } else if (res.code === 403){
-                        window.location.href = baseUrl+"/login";
+                        parent.location.href = baseUrl+"/login";
                     }  else {
                         layer.msg(res.msg, {icon: 2});
                     }
@@ -157,3 +157,93 @@
         return http
     }) : "object" == typeof module && module.exports ? module.exports = http : n.http = http
 }(this);
+
+/**
+ * 鑾峰彇url閿�煎
+ */
+function getUrlVal(key) {
+    var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i');
+    var r = window.location.search.substr(1).match(reg);
+    if (r != null) {
+        return unescape(r[2]);
+    }
+    return null;
+}
+
+function getDateFormat(value){
+    var date = new Date();// 鑾峰彇褰撳墠鏃堕棿
+    date.setDate(date.getDate() + value);// 璁剧疆澶╂暟 -1 澶�
+    return date.Format("MM-dd");
+}
+/**
+ * 鏃ユ湡鏍煎紡鍖�
+ */
+Date.prototype.Format = function (fmt) {
+    var o = {
+        "M+": this.getMonth() + 1, //鏈堜唤
+        "d+": this.getDate(), //鏃�
+        "h+": this.getHours(), //灏忔椂
+        "m+": this.getMinutes(), //鍒�
+        "s+": this.getSeconds(), //绉�
+        "q+": Math.floor((this.getMonth() + 3) / 3), //瀛e害
+        "S": this.getMilliseconds() //姣
+    };
+    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+    for (var k in o)
+        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+    return fmt;
+}
+
+/**
+ * 鑾峰彇AI鍔╂墜SVG鍥炬爣HTML
+ * @param {number} width 瀹藉害锛岄粯璁�48
+ * @param {number} height 楂樺害锛岄粯璁�48
+ * @returns {string} SVG HTML瀛楃涓�
+ */
+function getAiIconHtml(width, height) {
+    width = width || 48;
+    height = height || 48;
+    // 鐢熸垚鍞竴ID闃叉鍐茬獊
+    var uniqueId = 'ai_icon_' + Math.random().toString(36).substr(2, 9);
+    var textGradientId = 'textGradient_' + uniqueId;
+    var glowId = 'glow_' + uniqueId;
+    var spinName = 'spin_' + uniqueId;
+
+    return '<svg width="' + width + '" height="' + height + '" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" fill="none">' +
+        '<defs>' +
+            '<linearGradient id="' + textGradientId + '" gradientUnits="userSpaceOnUse" x1="25" y1="50" x2="75" y2="50">' +
+                '<stop offset="0%"   stop-color="#8b5cf6"/>' +
+                '<stop offset="20%"  stop-color="#f472b6"/>' +
+                '<stop offset="40%"  stop-color="#fb923c"/>' +
+                '<stop offset="60%"  stop-color="#fbbf24"/>' +
+                '<stop offset="80%"  stop-color="#22d3ee"/>' +
+                '<stop offset="100%" stop-color="#3b82f6"/>' +
+                '<animateTransform attributeName="gradientTransform" type="rotate" from="0 50 50" to="360 50 50" dur="5s" repeatCount="indefinite" />' +
+            '</linearGradient>' +
+            '<filter id="' + glowId + '" x="-50%" y="-50%" width="200%" height="200%">' +
+                '<feGaussianBlur stdDeviation="1.6" result="blur"/>' +
+                '<feMerge>' +
+                    '<feMergeNode in="blur"/>' +
+                    '<feMergeNode in="SourceGraphic"/>' +
+                '</feMerge>' +
+            '</filter>' +
+            '<style>' +
+                '.' + spinName + ' { animation: ' + spinName + ' 5s linear infinite; transform-origin: 50px 50px; }' +
+                '@keyframes ' + spinName + ' { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }' +
+                '.geo-text-' + uniqueId + ' { fill: url(#' + textGradientId + '); stroke: rgba(0,0,0,0.40); stroke-width: 0.45; paint-order: stroke fill; }' +
+            '</style>' +
+        '</defs>' +
+        '<g class="' + spinName + '" filter="url(#' + glowId + ')">' +
+            '<g transform="rotate(0 50 50)"><rect x="48" y="18" width="4.5" height="10" rx="2" fill="#8b5cf6"/></g>' +
+            '<g transform="rotate(60 50 50)"><rect x="48" y="18" width="4.5" height="10" rx="2" fill="#f472b6"/></g>' +
+            '<g transform="rotate(120 50 50)"><rect x="48" y="18" width="4.5" height="10" rx="2" fill="#fb923c"/></g>' +
+            '<g transform="rotate(180 50 50)"><rect x="48" y="18" width="4.5" height="10" rx="2" fill="#fbbf24"/></g>' +
+            '<g transform="rotate(240 50 50)"><rect x="48" y="18" width="4.5" height="10" rx="2" fill="#22d3ee"/></g>' +
+            '<g transform="rotate(300 50 50)"><rect x="48" y="18" width="4.5" height="10" rx="2" fill="#3b82f6"/></g>' +
+        '</g>' +
+        '<g transform="translate(50 50) scale(0.35) translate(-32.5 -20)" class="geo-text-' + uniqueId + '">' +
+            '<path d="M0 40 L20 0 L40 40 Z"/><rect x="12" y="22" width="16" height="4" rx="1"/>' +
+            '<rect x="50" y="0"  width="15" height="4" rx="1"/><rect x="55" y="4"  width="5"  height="32" rx="1.5"/><rect x="50" y="36" width="15" height="4" rx="1"/>' +
+        '</g>' +
+    '</svg>';
+}

--
Gitblit v1.9.1