add drag icon for dragable rows

This commit is contained in:
RockYang 2024-08-12 14:00:50 +08:00
parent 2140eff51b
commit 9ece25e17d
14 changed files with 86 additions and 18 deletions

View File

@ -1,5 +1,10 @@
# 更新日志 # 更新日志
## v4.1.3
* 功能优化VIP 会员在进行任何操作都不扣减算力,以实现会员周卡月卡功能
* 功能优化:管理后台给可以拖动排序的组件添加拖动图标
* 功能新增:支持 Luma 文生视频功能
## v4.1.2 ## v4.1.2
* Bug修复修复思维导图页面获取模型失败的问题 * Bug修复修复思维导图页面获取模型失败的问题
* 功能优化优化MJ,SD,DALL-E 任务列表页面,显示失败任务的错误信息,删除失败任务可以恢复扣减算力 * 功能优化优化MJ,SD,DALL-E 任务列表页面,显示失败任务的错误信息,删除失败任务可以恢复扣减算力

View File

@ -6,6 +6,6 @@ VUE_APP_ADMIN_USER=admin
VUE_APP_ADMIN_PASS=admin123 VUE_APP_ADMIN_PASS=admin123
VUE_APP_KEY_PREFIX=GeekAI_DEV_ VUE_APP_KEY_PREFIX=GeekAI_DEV_
VUE_APP_TITLE="Geek-AI 创作系统" 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_DOCS_URL=https://docs.geekai.me
VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai

View File

@ -1,6 +1,6 @@
VUE_APP_API_HOST= VUE_APP_API_HOST=
VUE_APP_WS_HOST= VUE_APP_WS_HOST=
VUE_APP_KEY_PREFIX=GeekAI_ 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_DOCS_URL=https://docs.geekai.me
VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai VUE_APP_GIT_URL=https://github.com/yangjian102621/geekai

View File

@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 4125778 */ font-family: "iconfont"; /* Project id 4125778 */
src: url('iconfont.woff2?t=1721896403264') format('woff2'), src: url('iconfont.woff2?t=1723434190230') format('woff2'),
url('iconfont.woff?t=1721896403264') format('woff'), url('iconfont.woff?t=1723434190230') format('woff'),
url('iconfont.ttf?t=1721896403264') format('truetype'); url('iconfont.ttf?t=1723434190230') format('truetype');
} }
.iconfont { .iconfont {
@ -13,6 +13,14 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-drag:before {
content: "\e8ec";
}
.icon-move:before {
content: "\e6fd";
}
.icon-link:before { .icon-link:before {
content: "\e6b4"; content: "\e6b4";
} }

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,20 @@
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "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", "icon_id": "880330",
"name": "link", "name": "link",

Binary file not shown.

View File

@ -15,8 +15,8 @@ export function checkSession() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
httpGet('/api/user/session').then(res => { httpGet('/api/user/session').then(res => {
item.data = res.data item.data = res.data
// cache expires after 5 minutes // cache expires after 10 secs
item.expire = Date.now() + 1000 * 60 * 5 item.expire = Date.now() + 1000 * 10
Storage.set(userDataKey, item) Storage.set(userDataKey, item)
resolve(item.data) resolve(item.data)
}).catch(err => { }).catch(err => {
@ -38,8 +38,7 @@ export function checkAdminSession() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
httpGet('/api/admin/session').then(res => { httpGet('/api/admin/session').then(res => {
item.data = res.data item.data = res.data
// cache expires after 10 minutes item.expire = Date.now() + 1000 * 10
item.expire = Date.now() + 1000 * 60 * 10
Storage.set(adminDataKey, item) Storage.set(adminDataKey, item)
resolve(item.data) resolve(item.data)
}).catch(err => { }).catch(err => {
@ -60,8 +59,7 @@ export function getSystemInfo() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
httpGet('/api/config/get?key=system').then(res => { httpGet('/api/config/get?key=system').then(res => {
item.data = res item.data = res
// cache expires after 10 minutes item.expire = Date.now() + 1000 * 10
item.expire = Date.now() + 1000 * 60 * 10
Storage.set(systemInfoKey, item) Storage.set(systemInfoKey, item)
resolve(item.data) resolve(item.data)
}).catch(err => { }).catch(err => {
@ -79,8 +77,7 @@ export function getLicenseInfo() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
httpGet('/api/config/license').then(res => { httpGet('/api/config/license').then(res => {
item.data = res item.data = res
// cache expires after 10 minutes item.expire = Date.now() + 1000 * 10
item.expire = Date.now() + 1000 * 60 * 10
Storage.set(licenseInfoKey, item) Storage.set(licenseInfoKey, item)
resolve(item.data) resolve(item.data)
}).catch(err => { }).catch(err => {

View File

@ -17,7 +17,10 @@
</el-table-column> </el-table-column>
<el-table-column label="应用名称" prop="name"> <el-table-column label="应用名称" prop="name">
<template #default="scope"> <template #default="scope">
<span class="sort" :data-id="scope.row.id">{{ scope.row.name }}</span> <span class="sort" :data-id="scope.row.id">
<i class="iconfont icon-drag"></i>
{{ scope.row.name }}
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="应用标识" prop="key"/> <el-table-column label="应用标识" prop="key"/>
@ -373,6 +376,14 @@ const uploadImg = (file) => {
} }
} }
.sort {
cursor move
.iconfont {
position relative
top 1px
}
}
.pagination { .pagination {
padding 20px 0 padding 20px 0
display flex display flex

View File

@ -13,7 +13,10 @@
<el-table-column type="selection" width="38"></el-table-column> <el-table-column type="selection" width="38"></el-table-column>
<el-table-column prop="name" label="模型名称"> <el-table-column prop="name" label="模型名称">
<template #default="scope"> <template #default="scope">
<span class="sort" :data-id="scope.row.id">{{ scope.row.name }}</span> <span class="sort" :data-id="scope.row.id">
<i class="iconfont icon-drag"></i>
{{ scope.row.name }}
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="value" label="模型值"> <el-table-column prop="value" label="模型值">
@ -339,6 +342,14 @@ const remove = function (row) {
width: 100% width: 100%
} }
.sort {
cursor move
.iconfont {
position relative
top 1px
}
}
.pagination { .pagination {
padding 20px 0 padding 20px 0
display flex display flex

View File

@ -9,7 +9,10 @@
<el-table :data="items" :row-key="row => row.id" table-layout="auto"> <el-table :data="items" :row-key="row => row.id" table-layout="auto">
<el-table-column prop="name" label="菜单名称"> <el-table-column prop="name" label="菜单名称">
<template #default="scope"> <template #default="scope">
<span class="sort" :data-id="scope.row.id">{{ scope.row.name }}</span> <span class="sort" :data-id="scope.row.id">
<i class="iconfont icon-drag"></i>
{{ scope.row.name }}
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="icon" label="菜单图标"> <el-table-column prop="icon" label="菜单图标">
@ -240,6 +243,14 @@ const uploadImg = (file) => {
height 36px height 36px
} }
.sort {
cursor move
.iconfont {
position relative
top 1px
}
}
.el-select { .el-select {
width: 100% width: 100%
} }

View File

@ -9,7 +9,10 @@
<el-table :data="items" :row-key="row => row.id" table-layout="auto"> <el-table :data="items" :row-key="row => row.id" table-layout="auto">
<el-table-column prop="name" label="产品名称"> <el-table-column prop="name" label="产品名称">
<template #default="scope"> <template #default="scope">
<span class="sort" :data-id="scope.row.id">{{ scope.row.name }}</span> <span class="sort" :data-id="scope.row.id">
<i class="iconfont icon-drag"></i>
{{ scope.row.name }}
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="price" label="产品价格"/> <el-table-column prop="price" label="产品价格"/>
@ -227,6 +230,14 @@ const remove = function (row) {
} }
} }
.sort {
cursor move
.iconfont {
position relative
top 1px
}
}
.el-select { .el-select {
width: 100% width: 100%
} }