diff --git a/CHANGELOG.md b/CHANGELOG.md index ace0acb4..c411fad7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 更新日志 +## v4.1.3 +* 功能优化:VIP 会员在进行任何操作都不扣减算力,以实现会员周卡月卡功能 +* 功能优化:管理后台给可以拖动排序的组件添加拖动图标 +* 功能新增:支持 Luma 文生视频功能 + ## v4.1.2 * Bug修复:修复思维导图页面获取模型失败的问题 * 功能优化:优化MJ,SD,DALL-E 任务列表页面,显示失败任务的错误信息,删除失败任务可以恢复扣减算力 diff --git a/web/.env.development b/web/.env.development index f3eb9e14..90c5c327 100644 --- a/web/.env.development +++ b/web/.env.development @@ -6,6 +6,6 @@ VUE_APP_ADMIN_USER=admin VUE_APP_ADMIN_PASS=admin123 VUE_APP_KEY_PREFIX=GeekAI_DEV_ VUE_APP_TITLE="Geek-AI 创作系统" -VUE_APP_VERSION=v4.1.2 +VUE_APP_VERSION=v4.1.3 VUE_APP_DOCS_URL=https://docs.geekai.me VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai diff --git a/web/.env.production b/web/.env.production index eb506d0f..056d8338 100644 --- a/web/.env.production +++ b/web/.env.production @@ -1,6 +1,6 @@ VUE_APP_API_HOST= VUE_APP_WS_HOST= VUE_APP_KEY_PREFIX=GeekAI_ -VUE_APP_VERSION=v4.1.2 +VUE_APP_VERSION=v4.1.3 VUE_APP_DOCS_URL=https://docs.geekai.me VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai diff --git a/web/src/assets/iconfont/iconfont.css b/web/src/assets/iconfont/iconfont.css index 842956a9..2c72d0fd 100644 --- a/web/src/assets/iconfont/iconfont.css +++ b/web/src/assets/iconfont/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4125778 */ - src: url('iconfont.woff2?t=1721896403264') format('woff2'), - url('iconfont.woff?t=1721896403264') format('woff'), - url('iconfont.ttf?t=1721896403264') format('truetype'); + src: url('iconfont.woff2?t=1723434190230') format('woff2'), + url('iconfont.woff?t=1723434190230') format('woff'), + url('iconfont.ttf?t=1723434190230') format('truetype'); } .iconfont { @@ -13,6 +13,14 @@ -moz-osx-font-smoothing: grayscale; } +.icon-drag:before { + content: "\e8ec"; +} + +.icon-move:before { + content: "\e6fd"; +} + .icon-link:before { content: "\e6b4"; } diff --git a/web/src/assets/iconfont/iconfont.js b/web/src/assets/iconfont/iconfont.js index 7048f335..8d38c060 100644 --- a/web/src/assets/iconfont/iconfont.js +++ b/web/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4125778='',function(a){var l=(l=document.getElementsByTagName("script"))[l.length-1],c=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}}(window); \ No newline at end of file +window._iconfont_svg_string_4125778='',function(a){var l=(l=document.getElementsByTagName("script"))[l.length-1],c=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}}(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json index ffc0d972..5fbfb566 100644 --- a/web/src/assets/iconfont/iconfont.json +++ b/web/src/assets/iconfont/iconfont.json @@ -5,6 +5,20 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "15617554", + "name": "drag", + "font_class": "drag", + "unicode": "e8ec", + "unicode_decimal": 59628 + }, + { + "icon_id": "240317", + "name": "move", + "font_class": "move", + "unicode": "e6fd", + "unicode_decimal": 59133 + }, { "icon_id": "880330", "name": "link", diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf index 32d02e7b..887cbd6a 100644 Binary files a/web/src/assets/iconfont/iconfont.ttf and b/web/src/assets/iconfont/iconfont.ttf differ diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff index eb517115..79f8c16d 100644 Binary files a/web/src/assets/iconfont/iconfont.woff and b/web/src/assets/iconfont/iconfont.woff differ diff --git a/web/src/assets/iconfont/iconfont.woff2 b/web/src/assets/iconfont/iconfont.woff2 index 7d4d825e..ab7aa757 100644 Binary files a/web/src/assets/iconfont/iconfont.woff2 and b/web/src/assets/iconfont/iconfont.woff2 differ diff --git a/web/src/store/cache.js b/web/src/store/cache.js index 327f7be7..04409f60 100644 --- a/web/src/store/cache.js +++ b/web/src/store/cache.js @@ -15,8 +15,8 @@ export function checkSession() { return new Promise((resolve, reject) => { httpGet('/api/user/session').then(res => { item.data = res.data - // cache expires after 5 minutes - item.expire = Date.now() + 1000 * 60 * 5 + // cache expires after 10 secs + item.expire = Date.now() + 1000 * 10 Storage.set(userDataKey, item) resolve(item.data) }).catch(err => { @@ -38,8 +38,7 @@ export function checkAdminSession() { return new Promise((resolve, reject) => { httpGet('/api/admin/session').then(res => { item.data = res.data - // cache expires after 10 minutes - item.expire = Date.now() + 1000 * 60 * 10 + item.expire = Date.now() + 1000 * 10 Storage.set(adminDataKey, item) resolve(item.data) }).catch(err => { @@ -60,8 +59,7 @@ export function getSystemInfo() { return new Promise((resolve, reject) => { httpGet('/api/config/get?key=system').then(res => { item.data = res - // cache expires after 10 minutes - item.expire = Date.now() + 1000 * 60 * 10 + item.expire = Date.now() + 1000 * 10 Storage.set(systemInfoKey, item) resolve(item.data) }).catch(err => { @@ -79,8 +77,7 @@ export function getLicenseInfo() { return new Promise((resolve, reject) => { httpGet('/api/config/license').then(res => { item.data = res - // cache expires after 10 minutes - item.expire = Date.now() + 1000 * 60 * 10 + item.expire = Date.now() + 1000 * 10 Storage.set(licenseInfoKey, item) resolve(item.data) }).catch(err => { diff --git a/web/src/views/admin/Apps.vue b/web/src/views/admin/Apps.vue index 11e3e3c8..bffe733c 100644 --- a/web/src/views/admin/Apps.vue +++ b/web/src/views/admin/Apps.vue @@ -17,7 +17,10 @@ @@ -373,6 +376,14 @@ const uploadImg = (file) => { } } + .sort { + cursor move + .iconfont { + position relative + top 1px + } + } + .pagination { padding 20px 0 display flex diff --git a/web/src/views/admin/ChatModel.vue b/web/src/views/admin/ChatModel.vue index 3ecb89ed..1d7806a5 100644 --- a/web/src/views/admin/ChatModel.vue +++ b/web/src/views/admin/ChatModel.vue @@ -13,7 +13,10 @@ @@ -339,6 +342,14 @@ const remove = function (row) { width: 100% } + .sort { + cursor move + .iconfont { + position relative + top 1px + } + } + .pagination { padding 20px 0 display flex diff --git a/web/src/views/admin/Menu.vue b/web/src/views/admin/Menu.vue index a1878097..28579316 100644 --- a/web/src/views/admin/Menu.vue +++ b/web/src/views/admin/Menu.vue @@ -9,7 +9,10 @@ @@ -240,6 +243,14 @@ const uploadImg = (file) => { height 36px } + .sort { + cursor move + .iconfont { + position relative + top 1px + } + } + .el-select { width: 100% } diff --git a/web/src/views/admin/Product.vue b/web/src/views/admin/Product.vue index 966b6b1c..0666c5b0 100644 --- a/web/src/views/admin/Product.vue +++ b/web/src/views/admin/Product.vue @@ -9,7 +9,10 @@ @@ -227,6 +230,14 @@ const remove = function (row) { } } + .sort { + cursor move + .iconfont { + position relative + top 1px + } + } + .el-select { width: 100% }