1
This commit is contained in:
+23
@@ -6,6 +6,7 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
|||||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.dev33.satoken.annotation.SaMode;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
@@ -55,6 +56,28 @@ public class HonorManageController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移动端劳模先进展示页入口,用于首页专题卡片跳转。
|
||||||
|
*/
|
||||||
|
@At("/h5")
|
||||||
|
@SaCheckPermission(value = {"honor.manage", "h5.honor.manage"}, mode = SaMode.OR)
|
||||||
|
@Ok("beetl:/platform/zhghh5/dayofficework/honor/manage/index.html")
|
||||||
|
public void h5() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询移动端劳模先进展示数据,只返回 H5 页面需要的基础展示字段。
|
||||||
|
*
|
||||||
|
* @param pageForm 荣誉筛选和分页参数,H5 默认按当前年份和荣誉类别展示。
|
||||||
|
* @return 当前年份、当前荣誉类别下的荣誉展示分页数据。
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@SaCheckPermission(value = {"honor.manage", "h5.honor.manage"}, mode = SaMode.OR)
|
||||||
|
public Result h5Data(HonorPageForm pageForm) {
|
||||||
|
return Result.success(honorViService.listH5ManagePage(pageForm));
|
||||||
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("honor.manage")
|
@SaCheckPermission("honor.manage")
|
||||||
public Result pageData(HonorPageForm pageForm) {
|
public Result pageData(HonorPageForm pageForm) {
|
||||||
|
|||||||
@@ -222,5 +222,10 @@ public class Honor extends BaseModel {
|
|||||||
@Comment("附件")
|
@Comment("附件")
|
||||||
private List<JSONObject> files;
|
private List<JSONObject> files;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
|
@Comment("荣誉照片")
|
||||||
|
private List<JSONObject> photoFiles;
|
||||||
|
|
||||||
private String loginname;
|
private String loginname;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.honor.service;
|
package com.budwk.app.zhgh.dayofficework.honor.service;
|
||||||
|
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
import com.budwk.app.zhgh.dayofficework.honor.models.Honor;
|
import com.budwk.app.zhgh.dayofficework.honor.models.Honor;
|
||||||
import com.budwk.app.zhgh.dayofficework.honor.models.HonorBasicSettings;
|
import com.budwk.app.zhgh.dayofficework.honor.models.HonorBasicSettings;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.honor.param.HonorPageForm;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -15,5 +17,13 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface HonorCommonService extends BaseService<Honor> {
|
public interface HonorCommonService extends BaseService<Honor> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询移动端劳模先进展示数据。
|
||||||
|
*
|
||||||
|
* @param pageForm 荣誉筛选和分页参数,未传年份时默认查询当前年份。
|
||||||
|
* @return 当前筛选条件下的移动端展示分页结果。
|
||||||
|
*/
|
||||||
|
Pagination listH5ManagePage(HonorPageForm pageForm);
|
||||||
|
|
||||||
List<HonorBasicSettings> getHonorBasicSettingsByQueryTypeCode(String queryTypeCode);
|
List<HonorBasicSettings> getHonorBasicSettingsByQueryTypeCode(String queryTypeCode);
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-1
@@ -1,14 +1,18 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.honor.service.impl;
|
package com.budwk.app.zhgh.dayofficework.honor.service.impl;
|
||||||
|
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
import com.budwk.app.zhgh.dayofficework.honor.constant.HonorTypeOrigin;
|
|
||||||
import com.budwk.app.zhgh.dayofficework.honor.models.Honor;
|
import com.budwk.app.zhgh.dayofficework.honor.models.Honor;
|
||||||
import com.budwk.app.zhgh.dayofficework.honor.models.HonorBasicSettings;
|
import com.budwk.app.zhgh.dayofficework.honor.models.HonorBasicSettings;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.honor.param.HonorPageForm;
|
||||||
import com.budwk.app.zhgh.dayofficework.honor.service.HonorCommonService;
|
import com.budwk.app.zhgh.dayofficework.honor.service.HonorCommonService;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -26,6 +30,40 @@ public class HonorCommonServiceImpl extends BaseServiceImpl<Honor> implements Ho
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询移动端劳模先进展示数据,只返回首页专题页需要的轻量字段。
|
||||||
|
*
|
||||||
|
* @param pageForm 荣誉筛选和分页参数,未传年份时默认查询当前年份。
|
||||||
|
* @return 移动端劳模先进展示分页结果。
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Pagination listH5ManagePage(HonorPageForm pageForm) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
h.id,
|
||||||
|
h.userName,
|
||||||
|
h.applyUnionName,
|
||||||
|
h.unionName,
|
||||||
|
h.grantDate,
|
||||||
|
h.photoFiles,
|
||||||
|
prize.`name` AS prizeName,
|
||||||
|
type.`name` AS typeName,
|
||||||
|
type.queryTypeCode AS typeQueryTypeCode
|
||||||
|
FROM
|
||||||
|
`honor` h
|
||||||
|
LEFT JOIN honor_basic_settings prize ON prize.id = h.prize
|
||||||
|
LEFT JOIN honor_basic_settings type ON type.id = h.honorType
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
Integer year = pageForm.getYear() == null ? Calendar.getInstance().get(Calendar.YEAR) : pageForm.getYear();
|
||||||
|
cnd.andEX("YEAR(h.grantDate)", "=", year);
|
||||||
|
cnd.andEX("h.honorType", "=", pageForm.getHonorType());
|
||||||
|
cnd.desc("h.grantDate");
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HonorBasicSettings> getHonorBasicSettingsByQueryTypeCode(String queryTypeCode) {
|
public List<HonorBasicSettings> getHonorBasicSettingsByQueryTypeCode(String queryTypeCode) {
|
||||||
HonorBasicSettings basicSettings = dao().fetch(HonorBasicSettings.class, Cnd.where("queryTypeCode", "=", queryTypeCode));
|
HonorBasicSettings basicSettings = dao().fetch(HonorBasicSettings.class, Cnd.where("queryTypeCode", "=", queryTypeCode));
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE `honor`
|
||||||
|
ADD COLUMN `photoFiles` JSON NULL COMMENT '荣誉照片' AFTER `files`;
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
-- 劳模先进移动端菜单。
|
||||||
|
-- 手机端接口使用 h5. 前缀权限,便于 H5 角色单独授权。
|
||||||
|
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||||
|
SELECT
|
||||||
|
'c3d7258d2a3540f4a7f0f15a3f6b1001',
|
||||||
|
'',
|
||||||
|
LPAD(IFNULL(MAX(CAST(path AS UNSIGNED)), 0) + 1, 4, '0'),
|
||||||
|
'劳模先进',
|
||||||
|
'Honor H5',
|
||||||
|
'menu',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'medal-o',
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
'h5.honor',
|
||||||
|
NULL,
|
||||||
|
992,
|
||||||
|
1,
|
||||||
|
'',
|
||||||
|
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||||
|
'',
|
||||||
|
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||||
|
0,
|
||||||
|
'H5',
|
||||||
|
NULL,
|
||||||
|
'medal-o',
|
||||||
|
'l',
|
||||||
|
1,
|
||||||
|
0
|
||||||
|
FROM sys_menu
|
||||||
|
WHERE (parentId = '' OR parentId IS NULL)
|
||||||
|
AND CHAR_LENGTH(path) = 4
|
||||||
|
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'h5.honor') t);
|
||||||
|
|
||||||
|
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||||
|
SELECT 'c3d7258d2a3540f4a7f0f15a3f6b1002', p.id, CONCAT(p.path, '0001'), '劳模先进', 'Honor Manage H5', 'menu', '/platform/honor/manage/h5', 'data-pjax', '', 1, 0, 'h5.honor.manage', NULL, 1, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'H5', NULL, 'medal-o', 'l', 1, 0
|
||||||
|
FROM sys_menu p
|
||||||
|
WHERE p.permission = 'h5.honor'
|
||||||
|
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'h5.honor.manage') t);
|
||||||
|
|
||||||
|
INSERT INTO sys_role_menu (roleId, menuId)
|
||||||
|
SELECT r.id, m.id
|
||||||
|
FROM sys_role r
|
||||||
|
JOIN sys_menu m ON m.permission IN (
|
||||||
|
'h5.honor',
|
||||||
|
'h5.honor.manage'
|
||||||
|
)
|
||||||
|
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
||||||
|
WHERE r.code = 'SYSADMIN'
|
||||||
|
AND rm.roleId IS NULL;
|
||||||
@@ -120,3 +120,62 @@ JOIN sys_menu m ON m.permission IN (
|
|||||||
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
||||||
WHERE r.code = 'SYSADMIN'
|
WHERE r.code = 'SYSADMIN'
|
||||||
AND rm.roleId IS NULL;
|
AND rm.roleId IS NULL;
|
||||||
|
|
||||||
|
-- 普惠疗休养移动端菜单。
|
||||||
|
-- 手机端接口使用 h5. 前缀权限,保留 PC 权限的同时支持单独分配 H5 角色。
|
||||||
|
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||||
|
SELECT
|
||||||
|
'b7c63f0c73a44a9a8c4f3d3bb1a11001',
|
||||||
|
'',
|
||||||
|
LPAD(IFNULL(MAX(CAST(path AS UNSIGNED)), 0) + 1, 4, '0'),
|
||||||
|
'普惠疗休养',
|
||||||
|
'Tour H5',
|
||||||
|
'menu',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'map-marked',
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
'h5.tour',
|
||||||
|
NULL,
|
||||||
|
991,
|
||||||
|
1,
|
||||||
|
'',
|
||||||
|
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||||
|
'',
|
||||||
|
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||||
|
0,
|
||||||
|
'H5',
|
||||||
|
NULL,
|
||||||
|
'map-marked',
|
||||||
|
'p',
|
||||||
|
1,
|
||||||
|
0
|
||||||
|
FROM sys_menu
|
||||||
|
WHERE (parentId = '' OR parentId IS NULL)
|
||||||
|
AND CHAR_LENGTH(path) = 4
|
||||||
|
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'h5.tour') t);
|
||||||
|
|
||||||
|
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||||
|
SELECT 'b7c63f0c73a44a9a8c4f3d3bb1a11002', p.id, CONCAT(p.path, '0001'), '疗休养报名', 'Tour Signup H5', 'menu', '/platform/tour/signup/h5', 'data-pjax', '', 1, 0, 'h5.tour.signup', NULL, 1, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'H5', NULL, 'guide-o', 'l', 1, 0
|
||||||
|
FROM sys_menu p
|
||||||
|
WHERE p.permission = 'h5.tour'
|
||||||
|
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'h5.tour.signup') t);
|
||||||
|
|
||||||
|
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||||
|
SELECT 'b7c63f0c73a44a9a8c4f3d3bb1a11003', p.id, CONCAT(p.path, '0002'), '我的疗休养', 'My Tour H5', 'menu', '/platform/tour/mysignup/h5', 'data-pjax', '', 1, 0, 'h5.tour.mysignup', NULL, 2, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'H5', NULL, 'records-o', 'w', 0, 0
|
||||||
|
FROM sys_menu p
|
||||||
|
WHERE p.permission = 'h5.tour'
|
||||||
|
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'h5.tour.mysignup') t);
|
||||||
|
|
||||||
|
INSERT INTO sys_role_menu (roleId, menuId)
|
||||||
|
SELECT r.id, m.id
|
||||||
|
FROM sys_role r
|
||||||
|
JOIN sys_menu m ON m.permission IN (
|
||||||
|
'h5.tour',
|
||||||
|
'h5.tour.signup',
|
||||||
|
'h5.tour.mysignup'
|
||||||
|
)
|
||||||
|
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
||||||
|
WHERE r.code = 'SYSADMIN'
|
||||||
|
AND rm.roleId IS NULL;
|
||||||
|
|||||||
@@ -202,12 +202,22 @@ layout("/layouts/platform.html"){
|
|||||||
<el-form-item label="获奖材料">{{ viewData.awardMaterialsExcel }}</el-form-item>
|
<el-form-item label="获奖材料">{{ viewData.awardMaterialsExcel }}</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<table-tool title="荣誉照片"></table-tool>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="照片">
|
||||||
|
<file-preview v-if="viewData.photoFiles&&viewData.photoFiles.length" :files="viewData.photoFiles"
|
||||||
|
complete_result></file-preview>
|
||||||
|
<span v-else>暂无</span>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
<table-tool title="附件"></table-tool>
|
<table-tool title="附件"></table-tool>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item prop="user_name" label="附  件">
|
<el-form-item prop="user_name" label="附件">
|
||||||
<file-upload v-if="viewData.files&&viewData.files.length" :files="viewData.files"
|
<file-preview v-if="viewData.files&&viewData.files.length" :files="viewData.files"
|
||||||
:view="true"></file-upload>
|
complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -241,7 +251,7 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
"file-upload": httpVueLoader("/components/plugins/FileUpload.vue")
|
"file-preview": httpVueLoader("/components/plugins/sysFilePreview/index.vue")
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
dropdownCommand(command) {
|
dropdownCommand(command) {
|
||||||
@@ -255,12 +265,30 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
openView(row) {
|
openView(row) {
|
||||||
if (row.files) {
|
const viewRow = Object.assign({}, row)
|
||||||
row.files = JSON.parse(row.files)
|
viewRow.files = this.parseJsonArray(viewRow.files)
|
||||||
}
|
viewRow.photoFiles = this.parseJsonArray(viewRow.photoFiles)
|
||||||
this.viewData = row
|
this.viewData = viewRow
|
||||||
this.$refs.guava.view()
|
this.$refs.guava.view()
|
||||||
},
|
},
|
||||||
|
// 荣誉照片和附件可能是 JSON 字符串,详情预览前统一转换为数组。
|
||||||
|
parseJsonArray(value) {
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
if (!value) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
if (typeof value === "string") {
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(value)
|
||||||
|
return Array.isArray(parsed) ? parsed : []
|
||||||
|
} catch (e) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return []
|
||||||
|
},
|
||||||
doExport() {
|
doExport() {
|
||||||
if(!this.pageForm.honorType) {
|
if(!this.pageForm.honorType) {
|
||||||
this.$message.warning("请选择荣誉类型")
|
this.$message.warning("请选择荣誉类型")
|
||||||
@@ -304,7 +332,8 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getHonorPrize(honorType) {
|
async getHonorPrize(honorType) {
|
||||||
const res = await this.$axios.post("/platform/honor/basic/settings/getData", {parentId: honorType})
|
const request = this.$axios.post("/platform/honor/basic/settings/getData", {parentId: honorType})
|
||||||
|
const res = await request
|
||||||
return res.data
|
return res.data
|
||||||
},
|
},
|
||||||
getHonorType() {
|
getHonorType() {
|
||||||
|
|||||||
@@ -267,6 +267,18 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>-->
|
</el-col>-->
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="荣誉照片" prop="photoFiles">
|
||||||
|
<file-upload
|
||||||
|
:value.sync="formData.photoFiles"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
upload_mode="drag"
|
||||||
|
:upload_number="10"
|
||||||
|
upload_result_category="array"
|
||||||
|
complete_result
|
||||||
|
:upload_size="50 * 1024 * 1024"></file-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="附件" prop="files">
|
<el-form-item label="附件" prop="files">
|
||||||
<file-upload card :files.sync="formData.files"
|
<file-upload card :files.sync="formData.files"
|
||||||
@@ -311,7 +323,8 @@ layout("/layouts/platform.html"){
|
|||||||
async userRemoteMethod(query) {
|
async userRemoteMethod(query) {
|
||||||
if (query) {
|
if (query) {
|
||||||
this.userOptions = []
|
this.userOptions = []
|
||||||
const resp = await this.$axios.post("/platform/honor/registration/listBeComfortedUser", {keyWord: query})
|
const request = this.$axios.post("/platform/honor/registration/listBeComfortedUser", {keyWord: query})
|
||||||
|
const resp = await request
|
||||||
this.userOptions = resp.data
|
this.userOptions = resp.data
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -323,6 +336,7 @@ layout("/layouts/platform.html"){
|
|||||||
doSubmit() {
|
doSubmit() {
|
||||||
this.formData.awardMaterials = JSON.stringify(this.formData.awardMaterials)
|
this.formData.awardMaterials = JSON.stringify(this.formData.awardMaterials)
|
||||||
this.formData.files = JSON.stringify(this.formData.files)
|
this.formData.files = JSON.stringify(this.formData.files)
|
||||||
|
this.formData.photoFiles = JSON.stringify(this.formData.photoFiles || [])
|
||||||
this.$axios.post("/platform/honor/registration/doSubmit", this.formData).then((res) => {
|
this.$axios.post("/platform/honor/registration/doSubmit", this.formData).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success("操作成功,即将跳转至台账界面")
|
this.$message.success("操作成功,即将跳转至台账界面")
|
||||||
@@ -354,7 +368,8 @@ layout("/layouts/platform.html"){
|
|||||||
this.$set(this.formData, "political", user.political)
|
this.$set(this.formData, "political", user.political)
|
||||||
},
|
},
|
||||||
async getUser(keyWord) {
|
async getUser(keyWord) {
|
||||||
const resp = await this.$axios.post("/platform/condolence/apply/listBeComfortedUser", {keyWord: keyWord})
|
const request = this.$axios.post("/platform/condolence/apply/listBeComfortedUser", {keyWord: keyWord})
|
||||||
|
const resp = await request
|
||||||
return resp.data
|
return resp.data
|
||||||
},
|
},
|
||||||
async honorTypeChange(val) {
|
async honorTypeChange(val) {
|
||||||
@@ -374,23 +389,27 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getHonorPrize(honorType) {
|
async getHonorPrize(honorType) {
|
||||||
const res = await this.$axios.post("/platform/honor/basic/settings/getData", {parentId: honorType})
|
const request = this.$axios.post("/platform/honor/basic/settings/getData", {parentId: honorType})
|
||||||
|
const res = await request
|
||||||
return res.data
|
return res.data
|
||||||
},
|
},
|
||||||
async getHonorType() {
|
async getHonorType() {
|
||||||
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorType")
|
const request = this.$axios.post("/platform/honor/basic/settings/getHonorType")
|
||||||
|
const res = await request
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.honorTypeList = res.data
|
this.honorTypeList = res.data
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getHonorLevel() {
|
async getHonorLevel() {
|
||||||
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorLevel")
|
const request = this.$axios.post("/platform/honor/basic/settings/getHonorLevel")
|
||||||
|
const res = await request
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.honorLevelList = res.data
|
this.honorLevelList = res.data
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getHonorAwardType() {
|
async getHonorAwardType() {
|
||||||
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorAwardType")
|
const request = this.$axios.post("/platform/honor/basic/settings/getHonorAwardType")
|
||||||
|
const res = await request
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.honorAwardList = res.data
|
this.honorAwardList = res.data
|
||||||
}
|
}
|
||||||
@@ -403,10 +422,32 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
// 荣誉照片和附件字段可能由后台以 JSON 字符串返回,统一转换为上传组件需要的数组。
|
||||||
|
normalizeJsonArray(value) {
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
if (!value) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
if (typeof value === "string") {
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(value)
|
||||||
|
return Array.isArray(parsed) ? parsed : []
|
||||||
|
} catch (e) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return []
|
||||||
|
},
|
||||||
async findData(id) {
|
async findData(id) {
|
||||||
const resp = await this.$axios.post(loc() + "/findData", {id: id})
|
const request = this.$axios.post(loc() + "/findData", {id: id})
|
||||||
|
const resp = await request
|
||||||
const data1 = resp.data
|
const data1 = resp.data
|
||||||
this.formData = resp.data
|
this.formData = resp.data
|
||||||
|
this.$set(this.formData, "awardMaterials", this.normalizeJsonArray(this.formData.awardMaterials))
|
||||||
|
this.$set(this.formData, "files", this.normalizeJsonArray(this.formData.files))
|
||||||
|
this.$set(this.formData, "photoFiles", this.normalizeJsonArray(this.formData.photoFiles))
|
||||||
if (this.formData.userId && this.formData.userId !== "") {
|
if (this.formData.userId && this.formData.userId !== "") {
|
||||||
await this.userRemoteMethod(this.formData.userName)
|
await this.userRemoteMethod(this.formData.userName)
|
||||||
} else {
|
} else {
|
||||||
@@ -441,7 +482,10 @@ layout("/layouts/platform.html"){
|
|||||||
if (this.honorTypeList && this.honorTypeList.length > 0) {
|
if (this.honorTypeList && this.honorTypeList.length > 0) {
|
||||||
this.formData = {
|
this.formData = {
|
||||||
honorType: this.honorTypeList[0].id,
|
honorType: this.honorTypeList[0].id,
|
||||||
queryTypeCode: this.honorTypeList[0].queryTypeCode
|
queryTypeCode: this.honorTypeList[0].queryTypeCode,
|
||||||
|
awardMaterials: [],
|
||||||
|
files: [],
|
||||||
|
photoFiles: []
|
||||||
}
|
}
|
||||||
this.honorPrizeList = await this.getHonorPrize(this.formData.honorType)
|
this.honorPrizeList = await this.getHonorPrize(this.formData.honorType)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,495 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform_h5.html"){
|
||||||
|
#-->
|
||||||
|
|
||||||
|
<div id="app" v-cloak>
|
||||||
|
<div class="honor-showcase">
|
||||||
|
<van-nav-bar
|
||||||
|
title="劳模先进"
|
||||||
|
left-text="返回"
|
||||||
|
left-arrow
|
||||||
|
fixed
|
||||||
|
placeholder
|
||||||
|
@click-left="goBack"
|
||||||
|
></van-nav-bar>
|
||||||
|
|
||||||
|
<div class="honor-tabs">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="honor-tab"
|
||||||
|
:class="{ active: activeTab === 'labor' }"
|
||||||
|
@click="switchTab('labor')">
|
||||||
|
劳模风采
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="honor-tab"
|
||||||
|
:class="{ active: activeTab === 'studio' }"
|
||||||
|
@click="switchTab('studio')">
|
||||||
|
创新工作室
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="honor-intro">
|
||||||
|
<div class="honor-intro__corner honor-intro__corner--left"></div>
|
||||||
|
<div class="honor-intro__corner honor-intro__corner--right"></div>
|
||||||
|
<p>一份坚守,淬炼出奋斗的生命价值;一份专注,迸发不断创新的发展动力。</p>
|
||||||
|
<p>他们扎根岗位、追求卓越,以实干书写担当,用匠心点亮前行方向。</p>
|
||||||
|
<p>致敬劳模先进,礼赞奋斗精神。</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<van-loading v-if="loading" class="honor-loading" color="#fff">加载中...</van-loading>
|
||||||
|
|
||||||
|
<div v-else class="honor-list">
|
||||||
|
<article v-for="item in honorList" :key="item.id" class="honor-card">
|
||||||
|
<div class="honor-card__image-wrap">
|
||||||
|
<img v-if="item.cover" class="honor-card__image" :src="item.cover" alt="">
|
||||||
|
<div v-else class="honor-card__placeholder">
|
||||||
|
<div class="honor-card__placeholder-title">{{ getDisplayName(item) }}</div>
|
||||||
|
<div class="honor-card__placeholder-sub">劳模先进</div>
|
||||||
|
</div>
|
||||||
|
<div class="honor-card__name">{{ getDisplayName(item) }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="honor-card__body">
|
||||||
|
<div class="honor-card__gold-line"></div>
|
||||||
|
<div class="honor-card__prize">《{{ item.prizeName || '荣誉奖项' }}》</div>
|
||||||
|
<div class="honor-card__date" v-if="item.grantDate">授予时间:{{ item.grantDate }}</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<van-empty v-if="honorList.length === 0" image="search" description="暂无当年荣誉"></van-empty>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script nonce="${cspNonce!}">
|
||||||
|
new Vue({
|
||||||
|
el: "#app",
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
|
activeTab: "labor",
|
||||||
|
currentYear: new Date().getFullYear(),
|
||||||
|
honorTypeList: [],
|
||||||
|
honorTypeMap: {
|
||||||
|
labor: null,
|
||||||
|
studio: null
|
||||||
|
},
|
||||||
|
honorList: [],
|
||||||
|
loading: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goBack: function () {
|
||||||
|
this.returnHome()
|
||||||
|
},
|
||||||
|
returnHome: function () {
|
||||||
|
if (window.store && typeof window.store.commit === "function") {
|
||||||
|
window.store.commit("setActiveTarBar", "home")
|
||||||
|
}
|
||||||
|
if (!window.$ || !$.support || !$.support.pjax) {
|
||||||
|
window.location.replace("/platform/h5/home")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var fallbackTimer = window.setTimeout(function () {
|
||||||
|
window.location.replace("/platform/h5/home")
|
||||||
|
}, 1200)
|
||||||
|
$(document).one("pjax:complete", function () {
|
||||||
|
window.clearTimeout(fallbackTimer)
|
||||||
|
})
|
||||||
|
$(document).one("pjax:error pjax:timeout", function () {
|
||||||
|
window.clearTimeout(fallbackTimer)
|
||||||
|
window.location.replace("/platform/h5/home")
|
||||||
|
})
|
||||||
|
$.pjax({
|
||||||
|
url: "/platform/h5/home",
|
||||||
|
container: "#container",
|
||||||
|
fragment: "#container",
|
||||||
|
push: false,
|
||||||
|
replace: true,
|
||||||
|
timeout: 8000
|
||||||
|
})
|
||||||
|
},
|
||||||
|
switchTab: function (tab) {
|
||||||
|
if (this.activeTab === tab) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.activeTab = tab
|
||||||
|
this.listHonor()
|
||||||
|
},
|
||||||
|
getDisplayName: function (item) {
|
||||||
|
if (this.activeTab === "studio") {
|
||||||
|
return item.applyUnionName || item.unionName || item.userName || "创新工作室"
|
||||||
|
}
|
||||||
|
return item.userName || item.applyUnionName || item.unionName || "劳模先进"
|
||||||
|
},
|
||||||
|
getHonorTypes: function () {
|
||||||
|
var self = this
|
||||||
|
return this.$axios.post("/platform/honor/basic/settings/getHonorType").then(function (res) {
|
||||||
|
if (res.code === 0) {
|
||||||
|
self.honorTypeList = res.data || []
|
||||||
|
self.honorTypeMap.labor = self.findHonorType("HONOR_SINGLE", "个人荣誉")
|
||||||
|
self.honorTypeMap.studio = self.findHonorType("HONOR_LIST", "集体荣誉")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
findHonorType: function (queryTypeCode, name) {
|
||||||
|
var target = this.honorTypeList.find(function (item) {
|
||||||
|
return item.queryTypeCode === queryTypeCode
|
||||||
|
})
|
||||||
|
if (!target) {
|
||||||
|
target = this.honorTypeList.find(function (item) {
|
||||||
|
return item.name === name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return target || null
|
||||||
|
},
|
||||||
|
listHonor: function () {
|
||||||
|
var self = this
|
||||||
|
var type = this.activeTab === "studio" ? this.honorTypeMap.studio : this.honorTypeMap.labor
|
||||||
|
if (!type) {
|
||||||
|
this.honorList = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
this.$axios.post("/platform/honor/manage/h5Data", {
|
||||||
|
year: this.currentYear,
|
||||||
|
honorType: type.id,
|
||||||
|
pageNumber: 1,
|
||||||
|
pageSize: 50
|
||||||
|
}).then(function (res) {
|
||||||
|
if (res.code === 0) {
|
||||||
|
var list = (res.data && res.data.list) || []
|
||||||
|
self.honorList = list.map(function (item) {
|
||||||
|
item.cover = ""
|
||||||
|
item.photoId = self.getFirstPhotoId(item.photoFiles)
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
self.loadPhotoMap()
|
||||||
|
} else {
|
||||||
|
self.honorList = []
|
||||||
|
}
|
||||||
|
}).finally(function () {
|
||||||
|
self.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getFirstPhotoId: function (photoFiles) {
|
||||||
|
var files = []
|
||||||
|
if (Array.isArray(photoFiles)) {
|
||||||
|
files = photoFiles
|
||||||
|
} else if (photoFiles) {
|
||||||
|
try {
|
||||||
|
files = JSON.parse(photoFiles)
|
||||||
|
} catch (e) {
|
||||||
|
files = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!files.length) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
var first = files[0]
|
||||||
|
var data = first && first.response ? first.response.data : first
|
||||||
|
if (!data) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
data = String(data)
|
||||||
|
return data.indexOf("=") > -1 ? data.substring(data.lastIndexOf("=") + 1) : data
|
||||||
|
},
|
||||||
|
loadPhotoMap: function () {
|
||||||
|
var self = this
|
||||||
|
var ids = this.honorList.map(function (item) {
|
||||||
|
return item.photoId
|
||||||
|
}).filter(function (id) {
|
||||||
|
return !!id
|
||||||
|
})
|
||||||
|
if (!ids.length) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$axios.post("/platform/sys/file/previewFileData", { ids: JSON.stringify(ids) }).then(function (res) {
|
||||||
|
if (res.code !== 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var fileMap = {}
|
||||||
|
;(res.data || []).forEach(function (file) {
|
||||||
|
fileMap[file.id] = file.thumbnail || file.downloadPath || ""
|
||||||
|
})
|
||||||
|
self.honorList = self.honorList.map(function (item) {
|
||||||
|
item.cover = fileMap[item.photoId] || ""
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created: function () {
|
||||||
|
var self = this
|
||||||
|
this.getHonorTypes().then(function () {
|
||||||
|
self.listHonor()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background: #c80019;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-showcase {
|
||||||
|
min-height: 100vh;
|
||||||
|
padding: 0 14px 28px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 50% 0, rgba(255, 113, 89, .42) 0, rgba(255, 113, 89, 0) 32%),
|
||||||
|
linear-gradient(180deg, #d6001c 0%, #bd0018 56%, #a90016 100%);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-showcase /deep/ .van-nav-bar {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-showcase /deep/ .van-nav-bar__title {
|
||||||
|
color: #20242a;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-showcase /deep/ .van-nav-bar .van-icon,
|
||||||
|
.honor-showcase /deep/ .van-nav-bar__text {
|
||||||
|
color: #1989fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-showcase /deep/ .van-hairline--bottom::after {
|
||||||
|
border-color: #eef1f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-tabs {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
height: 76px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-tab {
|
||||||
|
position: relative;
|
||||||
|
border: 0;
|
||||||
|
background: transparent;
|
||||||
|
color: rgba(255, 247, 220, .76);
|
||||||
|
font-size: 19px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 28px;
|
||||||
|
padding: 0 8px 14px;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-tab.active {
|
||||||
|
color: #fff6d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-tab.active::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
bottom: 4px;
|
||||||
|
width: 38px;
|
||||||
|
height: 5px;
|
||||||
|
border-radius: 999px;
|
||||||
|
background: #ffe6a3;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
box-shadow: 0 2px 8px rgba(255, 230, 163, .38);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
padding: 20px 20px 46px;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
color: #ffe9bd;
|
||||||
|
background:
|
||||||
|
linear-gradient(165deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, 0) 46%),
|
||||||
|
linear-gradient(180deg, #d73535 0%, #c9262f 100%);
|
||||||
|
box-shadow: 0 10px 22px rgba(90, 0, 8, .22);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro::before,
|
||||||
|
.honor-intro::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: -30px;
|
||||||
|
right: -30px;
|
||||||
|
height: 58px;
|
||||||
|
border: 5px solid rgba(255, 223, 151, .86);
|
||||||
|
border-top: 0;
|
||||||
|
border-radius: 0 0 50% 50%;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro::before {
|
||||||
|
bottom: 14px;
|
||||||
|
transform: rotate(-2deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro::after {
|
||||||
|
bottom: -12px;
|
||||||
|
opacity: .75;
|
||||||
|
transform: rotate(2deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro p {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
margin: 0 0 9px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro__corner {
|
||||||
|
position: absolute;
|
||||||
|
top: 14px;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
border-top: 3px solid rgba(255, 224, 161, .82);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro__corner--left {
|
||||||
|
left: 14px;
|
||||||
|
border-left: 3px solid rgba(255, 224, 161, .82);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-intro__corner--right {
|
||||||
|
right: 14px;
|
||||||
|
border-right: 3px solid rgba(255, 224, 161, .82);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-loading {
|
||||||
|
margin-top: 36px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-list {
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
background: #be0018;
|
||||||
|
box-shadow: 0 10px 22px rgba(83, 0, 9, .28);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__image-wrap {
|
||||||
|
position: relative;
|
||||||
|
height: 206px;
|
||||||
|
overflow: hidden;
|
||||||
|
background: #e6b06d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__image {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__placeholder {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: #fff5d8;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 78% 30%, rgba(255, 221, 148, .36), rgba(255, 221, 148, 0) 26%),
|
||||||
|
linear-gradient(140deg, #d93a31 0%, #b60018 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__placeholder-title {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__placeholder-sub {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
letter-spacing: 0;
|
||||||
|
color: rgba(255, 245, 216, .82);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__image-wrap::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
height: 58px;
|
||||||
|
background: linear-gradient(165deg, rgba(177, 0, 24, .86) 0%, rgba(177, 0, 24, .74) 62%, rgba(177, 0, 24, .1) 63%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__name {
|
||||||
|
position: absolute;
|
||||||
|
left: 20px;
|
||||||
|
bottom: 16px;
|
||||||
|
z-index: 1;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 22px;
|
||||||
|
line-height: 28px;
|
||||||
|
font-weight: 800;
|
||||||
|
text-shadow: 0 2px 8px rgba(89, 0, 12, .32);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__body {
|
||||||
|
position: relative;
|
||||||
|
min-height: 82px;
|
||||||
|
padding: 22px 20px 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #ffe5ad;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 92% 14%, rgba(255, 230, 168, .4), rgba(255, 230, 168, 0) 16%),
|
||||||
|
#be0018;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__body::after {
|
||||||
|
content: "★";
|
||||||
|
position: absolute;
|
||||||
|
right: 18px;
|
||||||
|
top: -20px;
|
||||||
|
color: #ffd886;
|
||||||
|
font-size: 42px;
|
||||||
|
text-shadow: 0 3px 8px rgba(85, 0, 9, .28);
|
||||||
|
transform: rotate(-12deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__gold-line {
|
||||||
|
width: 44px;
|
||||||
|
height: 3px;
|
||||||
|
border-radius: 999px;
|
||||||
|
background: #e7b13c;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__prize {
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #ffe5ad;
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-card__date {
|
||||||
|
margin-top: 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 18px;
|
||||||
|
color: rgba(255, 229, 173, .72);
|
||||||
|
}
|
||||||
|
|
||||||
|
.honor-showcase /deep/ .van-empty__description {
|
||||||
|
color: rgba(255, 255, 255, .78);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
@@ -145,14 +145,14 @@ const home = {
|
|||||||
desc: "先进风采展示",
|
desc: "先进风采展示",
|
||||||
icon: "medal-o",
|
icon: "medal-o",
|
||||||
className: "feature-card--model",
|
className: "feature-card--model",
|
||||||
href: ""
|
href: "/platform/honor/manage/h5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "普惠信息",
|
name: "普惠疗休养",
|
||||||
desc: "普惠服务信息",
|
desc: "疗休养报名服务",
|
||||||
icon: "bullhorn-o",
|
icon: "bullhorn-o",
|
||||||
className: "feature-card--inclusive",
|
className: "feature-card--inclusive",
|
||||||
href: ""
|
href: "/platform/tour/signup/h5"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
appLogo: "",
|
appLogo: "",
|
||||||
|
|||||||
Reference in New Issue
Block a user