commit
This commit is contained in:
@@ -134,6 +134,7 @@ public class FlowDesignController {
|
|||||||
jsonObject.set("instanceViewUrl", processDesign.getInstanceViewUrl());
|
jsonObject.set("instanceViewUrl", processDesign.getInstanceViewUrl());
|
||||||
jsonObject.set("h5InstanceViewUrl", processDesign.getH5InstanceViewUrl());
|
jsonObject.set("h5InstanceViewUrl", processDesign.getH5InstanceViewUrl());
|
||||||
jsonObject.set("icon", processDesign.getIcon());
|
jsonObject.set("icon", processDesign.getIcon());
|
||||||
|
jsonObject.set("picIcon", processDesign.getPicIcon());
|
||||||
jsonObject.set("description", processDesign.getDescription());
|
jsonObject.set("description", processDesign.getDescription());
|
||||||
processDesign.setContent(jsonObject);
|
processDesign.setContent(jsonObject);
|
||||||
dao.insert(processDesign);
|
dao.insert(processDesign);
|
||||||
@@ -153,6 +154,7 @@ public class FlowDesignController {
|
|||||||
jsonObject.set("instanceViewUrl", processDesign.getInstanceViewUrl());
|
jsonObject.set("instanceViewUrl", processDesign.getInstanceViewUrl());
|
||||||
jsonObject.set("h5InstanceViewUrl", processDesign.getH5InstanceViewUrl());
|
jsonObject.set("h5InstanceViewUrl", processDesign.getH5InstanceViewUrl());
|
||||||
jsonObject.set("icon", processDesign.getIcon());
|
jsonObject.set("icon", processDesign.getIcon());
|
||||||
|
jsonObject.set("picIcon", processDesign.getPicIcon());
|
||||||
jsonObject.set("description", processDesign.getDescription());
|
jsonObject.set("description", processDesign.getDescription());
|
||||||
processDesign.setContent(jsonObject);
|
processDesign.setContent(jsonObject);
|
||||||
processDesignService.update(processDesign);
|
processDesignService.update(processDesign);
|
||||||
@@ -172,6 +174,7 @@ public class FlowDesignController {
|
|||||||
jsonObject.set("instanceViewUrl", processDesign.getInstanceViewUrl());
|
jsonObject.set("instanceViewUrl", processDesign.getInstanceViewUrl());
|
||||||
jsonObject.set("h5InstanceViewUrl", processDesign.getH5InstanceViewUrl());
|
jsonObject.set("h5InstanceViewUrl", processDesign.getH5InstanceViewUrl());
|
||||||
jsonObject.set("icon", processDesign.getIcon());
|
jsonObject.set("icon", processDesign.getIcon());
|
||||||
|
jsonObject.set("picIcon", processDesign.getPicIcon());
|
||||||
jsonObject.set("description", processDesign.getDescription());
|
jsonObject.set("description", processDesign.getDescription());
|
||||||
processDesign.setContent(jsonObject);
|
processDesign.setContent(jsonObject);
|
||||||
processDesignService.update(processDesign);
|
processDesignService.update(processDesign);
|
||||||
|
|||||||
@@ -23,6 +23,11 @@ public class ProcessCategory extends BaseModel {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
@Comment("图片图标")
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||||
|
private String picIcon;
|
||||||
|
|
||||||
@Comment("图标")
|
@Comment("图标")
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||||
|
|||||||
@@ -56,6 +56,10 @@ public class ProcessDesign extends BaseModel {
|
|||||||
@Column
|
@Column
|
||||||
private String h5InstanceViewUrl;
|
private String h5InstanceViewUrl;
|
||||||
|
|
||||||
|
@Comment("图片图标")
|
||||||
|
@Column
|
||||||
|
private String picIcon;
|
||||||
|
|
||||||
@Comment("图标")
|
@Comment("图标")
|
||||||
@Column
|
@Column
|
||||||
private String icon;
|
private String icon;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public class SysV4AppsController {
|
|||||||
category.put("id", module.getId());
|
category.put("id", module.getId());
|
||||||
category.put("name", module.getName());
|
category.put("name", module.getName());
|
||||||
category.put("icon", module.getFaIcon());
|
category.put("icon", module.getFaIcon());
|
||||||
|
category.put("picIcon", module.getIcon());
|
||||||
return category;
|
return category;
|
||||||
}).toList();
|
}).toList();
|
||||||
return Result.success("获取应用分类成功").addData(categories);
|
return Result.success("获取应用分类成功").addData(categories);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class SysV4ServController {
|
|||||||
@ApiOperation("获取应用列表")
|
@ApiOperation("获取应用列表")
|
||||||
public Result list(@Param("categoryId") String categoryId, @Param("letter") String letter, @Param("keyword") String keyword, HttpServletRequest req) {
|
public Result list(@Param("categoryId") String categoryId, @Param("letter") String letter, @Param("keyword") String keyword, HttpServletRequest req) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT t.*
|
SELECT t.*,(select picIcon from wf_process_design where name = t.name) as picIcon
|
||||||
FROM wf_process_define t
|
FROM wf_process_define t
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT name, MAX(id) AS max_id
|
SELECT name, MAX(id) AS max_id
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 208 KiB |
@@ -339,7 +339,8 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
:class="['apps-sidebar-item', activeCategory === category.id ? 'active' : '']"
|
:class="['apps-sidebar-item', activeCategory === category.id ? 'active' : '']"
|
||||||
@click="changeCategory(category.id)"
|
@click="changeCategory(category.id)"
|
||||||
>
|
>
|
||||||
<i :class="category.icon || 'fa fa-th-large'"></i>
|
<img v-if="category.picIcon" :src="category.picIcon" :alt="category.name || ''" style="width: 20px"/>
|
||||||
|
<i v-else :class="category.icon || 'fa fa-th-large'"></i>
|
||||||
{{ category.name }}
|
{{ category.name }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -375,9 +376,11 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
<div class="apps-grid" v-if="applications.length > 0">
|
<div class="apps-grid" v-if="applications.length > 0">
|
||||||
<div v-for="app in applications" :key="app.id" class="app-card" @click.stop="openApp(app)">
|
<div v-for="app in applications" :key="app.id" class="app-card" @click.stop="openApp(app)">
|
||||||
<div :class="['app-icon', app.iconType]">
|
<div :class="['app-icon', app.iconType]">
|
||||||
<!-- <i v-if="app.icon && !app.picIcon" :class="app.icon"></i>-->
|
<!--<i v-if="app.icon && !app.picIcon" :class="app.icon"></i>
|
||||||
<!-- <img v-else-if="app.picIcon" :src="app.picIcon" :alt="app.name || ''" />-->
|
<img v-else-if="app.picIcon" :src="app.picIcon" :alt="app.name || ''" />-->
|
||||||
<i class="fa fa-skype"></i>
|
<!--<i class="fa fa-skype"></i>-->
|
||||||
|
<img v-if="app.picIcon" :src="app.picIcon" :alt="app.name || ''" />
|
||||||
|
<i v-else class="fa fa-skype"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="app-info">
|
<div class="app-info">
|
||||||
<div class="app-title">{{ app.name }}</div>
|
<div class="app-title">{{ app.name }}</div>
|
||||||
|
|||||||
@@ -125,7 +125,6 @@ const entry = {
|
|||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
margin-bottom: 20px;
|
|
||||||
border-bottom: 2px solid #e8e8e8;
|
border-bottom: 2px solid #e8e8e8;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
@@ -169,8 +168,8 @@ const entry = {
|
|||||||
justify-items: center; /* 子项内容居中(图标和文字) */
|
justify-items: center; /* 子项内容居中(图标和文字) */
|
||||||
justify-content: start; /* 整体网格靠左对齐,避免居中 */
|
justify-content: start; /* 整体网格靠左对齐,避免居中 */
|
||||||
|
|
||||||
gap: 12px;
|
gap: 4px;
|
||||||
padding: 12px;
|
padding: 12px 4px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
||||||
@@ -183,11 +182,11 @@ const entry = {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 12px;
|
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
padding: 6px;
|
||||||
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
const stats = {
|
const stats = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div class="stats-section">
|
<div class="stats-section">
|
||||||
|
<div class="stats-family">
|
||||||
|
<img src="/assets/platform/img/home/family.png"/>
|
||||||
|
</div>
|
||||||
<div class="stats-grid">
|
<div class="stats-grid">
|
||||||
<!-- 待办 -->
|
<!-- 待办 -->
|
||||||
<div
|
<div
|
||||||
@@ -110,22 +113,22 @@ const stats = {
|
|||||||
style: /*language=CSS*/ `
|
style: /*language=CSS*/ `
|
||||||
/* 右侧统计区域 */
|
/* 右侧统计区域 */
|
||||||
.stats-section {
|
.stats-section {
|
||||||
position: absolute;
|
|
||||||
bottom: 24px;
|
|
||||||
right: 24px;
|
|
||||||
/*background: white;*/
|
/*background: white;*/
|
||||||
color: #333;
|
color: #333;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
width: 680px;
|
width: 80%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: -130px auto 0;
|
||||||
/*border: 1px solid #e8e8e8;*/
|
/*border: 1px solid #e8e8e8;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.stats-grid {
|
.stats-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(4, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,13 +143,15 @@ const stats = {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
|
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
|
||||||
|
width: 200px;
|
||||||
|
height: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.stat-icon {
|
.stat-icon {
|
||||||
font-size: 20px;
|
font-size: 30px;
|
||||||
width: 36px;
|
width: 50px;
|
||||||
height: 36px;
|
height: 50px;
|
||||||
background: #e6f7ff;
|
background: #e6f7ff;
|
||||||
color: #1890ff;
|
color: #1890ff;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
@@ -178,6 +183,7 @@ const stats = {
|
|||||||
.stat-content {
|
.stat-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stat-label {
|
.stat-label {
|
||||||
@@ -192,5 +198,14 @@ const stats = {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.stats-family {
|
||||||
|
width: 68%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stats-family img {
|
||||||
|
height: 190px !important;
|
||||||
|
border-radius: 30px;
|
||||||
|
}
|
||||||
`
|
`
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -334,7 +334,8 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
:class="['apps-sidebar-item', activeCategory === category.id ? 'active' : '']"
|
:class="['apps-sidebar-item', activeCategory === category.id ? 'active' : '']"
|
||||||
@click="changeCategory(category.id)"
|
@click="changeCategory(category.id)"
|
||||||
>
|
>
|
||||||
<i :class="category.icon || 'fa fa-th-large'"></i>
|
<img v-if="category.picIcon" :src="category.picIcon" :alt="category.name || ''" style="width: 20px"/>
|
||||||
|
<i v-else :class="category.icon || 'fa fa-th-large'"></i>
|
||||||
{{ category.name }}
|
{{ category.name }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -372,7 +373,7 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
<div class="apps-grid" v-if="applications.length > 0">
|
<div class="apps-grid" v-if="applications.length > 0">
|
||||||
<div v-for="app in applications" :key="app.id" class="app-card" @click.stop="openApp(app)">
|
<div v-for="app in applications" :key="app.id" class="app-card" @click.stop="openApp(app)">
|
||||||
<div :class="['app-icon', app.iconType]">
|
<div :class="['app-icon', app.iconType]">
|
||||||
<i v-if="app.icon" :class="app.icon"></i>
|
<img v-if="app.picIcon" :src="app.picIcon" :alt="app.name || ''" />
|
||||||
<i v-else class="fa fa-skype"></i>
|
<i v-else class="fa fa-skype"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="app-info">
|
<div class="app-info">
|
||||||
|
|||||||
@@ -43,6 +43,15 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="{ required: true, message: '请输入类型名称', trigger: 'blur' }">
|
:rules="{ required: true, message: '请输入类型名称', trigger: 'blur' }">
|
||||||
<el-input v-model="formData.name" placeholder="请输入类型名称"></el-input>
|
<el-input v-model="formData.name" placeholder="请输入类型名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item prop="picIcon" label="图片图标">
|
||||||
|
<file-upload
|
||||||
|
:value.sync="formData.picIcon"
|
||||||
|
:upload_number="1"
|
||||||
|
upload_mode="image"
|
||||||
|
upload_result_category="interval"
|
||||||
|
upload_result_type="url"
|
||||||
|
></file-upload>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="图标" prop="icon">
|
<el-form-item label="图标" prop="icon">
|
||||||
<el-input v-model="formData.icon" placeholder="请输入图标"></el-input>
|
<el-input v-model="formData.icon" placeholder="请输入图标"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|||||||
@@ -101,6 +101,15 @@ layout("/layouts/platform.html"){
|
|||||||
<el-form-item label="手机端查看地址" prop="h5InstanceViewUrl">
|
<el-form-item label="手机端查看地址" prop="h5InstanceViewUrl">
|
||||||
<el-input v-model="formData.h5InstanceViewUrl" placeholder="请输入手机端发起地址"></el-input>
|
<el-input v-model="formData.h5InstanceViewUrl" placeholder="请输入手机端发起地址"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item prop="picIcon" label="图片图标">
|
||||||
|
<file-upload
|
||||||
|
:value.sync="formData.picIcon"
|
||||||
|
:upload_number="1"
|
||||||
|
upload_mode="image"
|
||||||
|
upload_result_category="interval"
|
||||||
|
upload_result_type="url"
|
||||||
|
></file-upload>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="图标" prop="icon">
|
<el-form-item label="图标" prop="icon">
|
||||||
<el-input v-model="formData.icon" placeholder="请输入图标"></el-input>
|
<el-input v-model="formData.icon" placeholder="请输入图标"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|||||||
@@ -23,8 +23,10 @@ const apps = {
|
|||||||
@click="onClickNav(index)"
|
@click="onClickNav(index)"
|
||||||
>
|
>
|
||||||
<div class="nav-icon">
|
<div class="nav-icon">
|
||||||
<i v-if="category.icon" :class="category.icon"></i>
|
<!--<i v-if="category.icon" :class="category.icon"></i>
|
||||||
<i v-else class="fa fa-book"></i>
|
<i v-else class="fa fa-book"></i>-->
|
||||||
|
<img v-if="category.picIcon" :src="category.picIcon" :alt="category.name || ''" style="width: 18px"/>
|
||||||
|
<i v-else :class="category.icon || 'fa fa-th-large'"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-text">{{ category.name }}</div>
|
<div class="nav-text">{{ category.name }}</div>
|
||||||
<div class="nav-indicator" v-if="activeTab === index"></div>
|
<div class="nav-indicator" v-if="activeTab === index"></div>
|
||||||
@@ -46,7 +48,7 @@ const apps = {
|
|||||||
@touchmove="onTouchMove">
|
@touchmove="onTouchMove">
|
||||||
<!-- 图标 -->
|
<!-- 图标 -->
|
||||||
<div class="app-grid-icon">
|
<div class="app-grid-icon">
|
||||||
<van-icon v-if="app.picIcon" :name="app.picIcon" size="64" style="border-radius: 12px; width: 64px; height: 64px;"></van-icon>
|
<van-icon v-if="app.picIcon" :name="app.picIcon" size="45"></van-icon>
|
||||||
<van-icon v-else-if="app.icon" :name="app.icon" size="28"></van-icon>
|
<van-icon v-else-if="app.icon" :name="app.icon" size="28"></van-icon>
|
||||||
<van-icon v-else name="apps-o" size="28"></van-icon>
|
<van-icon v-else name="apps-o" size="28"></van-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -75,7 +77,8 @@ const apps = {
|
|||||||
class="grid-item"
|
class="grid-item"
|
||||||
@click="navigateToMenu(menu)"
|
@click="navigateToMenu(menu)"
|
||||||
>
|
>
|
||||||
<div class="grid-icon">
|
<img v-if="menu.picIcon" :src="menu.picIcon" :alt="menu.name || ''" style="width: 48px" class="grid-img"/>
|
||||||
|
<div v-else class="grid-icon">
|
||||||
<van-icon :name="menu.icon || 'apps-o'" size="24"></van-icon>
|
<van-icon :name="menu.icon || 'apps-o'" size="24"></van-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid-name">{{ menu.name }}</div>
|
<div class="grid-name">{{ menu.name }}</div>
|
||||||
@@ -407,7 +410,7 @@ const apps = {
|
|||||||
.app-grid {
|
.app-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
/* 改为自适应列数:每格最小 80px,自动换行 */
|
/* 改为自适应列数:每格最小 80px,自动换行 */
|
||||||
grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(60px, 1fr));
|
||||||
|
|
||||||
justify-items: center; /* 子项内容居中(图标和文字) */
|
justify-items: center; /* 子项内容居中(图标和文字) */
|
||||||
justify-content: start; /* 整体网格靠左对齐,避免居中 */
|
justify-content: start; /* 整体网格靠左对齐,避免居中 */
|
||||||
@@ -442,25 +445,25 @@ const apps = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app-grid-icon {
|
.app-grid-icon {
|
||||||
width: 64px;
|
width: 45px;
|
||||||
height: 64px;
|
height: 45px;
|
||||||
max-width: 64px;
|
max-width: 45px;
|
||||||
max-height: 64px;
|
max-height: 45px;
|
||||||
border-radius: 12px;
|
/*border-radius: 12px;
|
||||||
background: #f2f3f5;
|
background: #f2f3f5;*/
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-bottom: 6px;
|
margin-bottom: 6px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
border: 2px solid transparent;
|
/*border: 2px solid transparent;*/
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-grid-name {
|
.app-grid-name {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #323233;
|
color: #323233;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -540,6 +543,17 @@ const apps = {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/deep/ .grid-img {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
border-radius: 12px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
/deep/ .grid-name {
|
/deep/ .grid-name {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|||||||
Reference in New Issue
Block a user