This commit is contained in:
那些花儿
2025-09-12 11:45:24 +08:00
parent 0777e2f4f7
commit 16f2dda958
15 changed files with 191 additions and 59 deletions
@@ -1,7 +0,0 @@
package com.budwk.app.zhgh.dayofficework.huimin.service;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.dayofficework.huimin.models.Huimin;
public interface HuiminService extends BaseService<Huimin> {
}
@@ -36,6 +36,13 @@ public class TeacherCongressDelegateReadController {
public void index() {
}
@At("/h5")
@Ok("beetl:/platform/zhghh5/democratic/teachercongress/delegate/read/index.html")
@SaCheckPermission("h5.tc.delegate.read")
public void h5Index() {
}
@At
@SaCheckPermission("tc.delegate.read")
public Result pageData(@Valid @Param("pageForm") TeacherCongressDelegateManagePageParam pageForm) {
@@ -1,21 +0,0 @@
package com.budwk.app.zhgh.democratic.teachercongress.delegate.h5controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@IocBean
@At("/platform/h5/teacherCongress/delegate/read")
@Ok("json:full")
@Api(tags = "手机端代表阅览")
public class H5TeacherCongressDelegateReadController {
@At("")
@Ok("beetl:/platform/zhghh5/democratic/teachercongress/delegate/read/index.html")
@SaCheckPermission("tc.delegate.read")
public void index() {
}
}
@@ -1,11 +1,11 @@
package com.budwk.app.zhgh.dayofficework.huimin.controller;
package com.budwk.app.zhgh.staffbenefit.huimin.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.dayofficework.huimin.models.Huimin;
import com.budwk.app.zhgh.dayofficework.huimin.service.HuiminService;
import com.budwk.app.zhgh.staffbenefit.huimin.models.Huimin;
import com.budwk.app.zhgh.staffbenefit.huimin.service.HuiminService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -0,0 +1,48 @@
package com.budwk.app.zhgh.staffbenefit.huimin.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffbenefit.huimin.service.HuiminService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@IocBean
@At("/platform/huimin/mine")
@Api(tags = "惠民服务-我的")
@Slf4j
@Ok("json:full")
public class HuiminMineController {
@Inject
private HuiminService huiminService;
@At("")
@SaCheckLogin
@Ok("beetl:/platform/zhgh/staffbenefit/huimin/mine/index.html")
public void index() {
}
@At("/h5")
@SaCheckLogin
@Ok("beetl:/platform/zhghh5/staffbenefit/huimin/mine/index.html")
public void h5Index(){
}
@At
@SaCheckLogin
public Result pageData(PageForm pageForm){
Cnd cnd = Cnd.NEW();
Pagination pagination = huiminService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
}
@@ -1,4 +1,4 @@
package com.budwk.app.zhgh.dayofficework.huimin.models;
package com.budwk.app.zhgh.staffbenefit.huimin.models;
import com.budwk.app.base.model.BaseModel;
import lombok.Data;
@@ -0,0 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.huimin.service;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.staffbenefit.huimin.models.Huimin;
public interface HuiminService extends BaseService<Huimin> {
}
@@ -1,8 +1,8 @@
package com.budwk.app.zhgh.dayofficework.huimin.service.impl;
package com.budwk.app.zhgh.staffbenefit.huimin.service.impl;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.zhgh.dayofficework.huimin.models.Huimin;
import com.budwk.app.zhgh.dayofficework.huimin.service.HuiminService;
import com.budwk.app.zhgh.staffbenefit.huimin.models.Huimin;
import com.budwk.app.zhgh.staffbenefit.huimin.service.HuiminService;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -183,6 +183,12 @@ body {
}
/*************************覆盖vant默认CSS********************************/
.van-dropdown-menu__bar{
box-shadow: unset;
}
/*****************************申请表单CSS********************************/
.form-container {
padding-bottom: 80px;
@@ -43,12 +43,25 @@ const commonUtil = {
//下载文件
downLoadService: function (url, data) {
const loading = ELEMENT.Loading.service({
lock: true,
text: "导出中,请耐心等待",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)"
})
const userAgent = navigator.userAgent || navigator.vendor || window.opera
const isMobile = /iPad|iPhone|iPod|Android/.test(userAgent)
let loading = null
if(isMobile){
loading = vant.Toast.loading({
duration: 0,
forbidClick: true,
message: '导出中,请耐心等待'
});
}else{
loading = ELEMENT.Loading.service({
lock: true,
text: "导出中,请耐心等待",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)"
})
}
Vue.prototype.$axios
.post(url, data, { responseType: "blob" })
@@ -89,7 +102,11 @@ const commonUtil = {
loading.close()
})
.finally(() => {
loading.close()
if(isMobile){
loading.clear()
}else{
loading.close()
}
})
},
@@ -2,7 +2,7 @@
layout("/layouts/platform_h5.html"){
#-->
<div id="app" v-cloak>
<div id="app" v-cloak style="padding-bottom: 70px;">
<van-nav-bar title="代表阅览" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
@@ -31,9 +31,19 @@ layout("/layouts/platform_h5.html"){
</van-dropdown-menu>
</van-sticky>
<div class="export-buttons" style="position: fixed; bottom: 0; left: 0; right: 0; padding: 10px; display: flex; gap: 10px; background: white; border-top: 1px solid #eee; z-index: 1000; box-shadow: 0 -2px 8px rgba(0,0,0,0.1);">
<van-button type="primary" size="medium" @click="exportXlsx" style="flex: 1;">
<i class="fa fa-file-excel-o"></i> 导出Excel
</van-button>
<van-button type="info" size="medium" @click="exportDocx" style="flex: 1;">
<i class="fa fa-file-word-o"></i> 导出Word
</van-button>
</div>
<table-list api="/platform/teacherCongress/delegate/read/pageData" :page_form.sync="pageForm" json
@ready="onReady"
ref="tableListRef">
ref="tableListRef"
style="padding-bottom: 65px">
<template v-slot="{index,row}">
<table-column label="代表姓名">{{row.userName}}</table-column>
<table-column label="代表工号">{{row.loginName}}</table-column>
@@ -146,6 +156,12 @@ layout("/layouts/platform_h5.html"){
onReady() {
this.listRole()
this.listSession()
},
exportXlsx() {
this.$downLoad("/platform/teacherCongress/delegate/read/exportXlsx", this.pageForm)
},
exportDocx() {
this.$downLoad("/platform/teacherCongress/delegate/read/exportDocx", this.pageForm)
}
}
})
@@ -0,0 +1,62 @@
<!--#
layout("/layouts/platform_h5.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="惠民服务" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
v-model="pageForm.searchKeyword"
:show-action="false"
:reverse-color="false"
input-align="left"
placeholder="请输入姓名/工号搜索"
@search="doSearch"
></van-search>
</van-sticky>
<table-list api="/platform/huimin/mine/pageData"
:page_form.sync="pageForm"
json
@ready="onReady"
img=""
ref="tableListRef">
</table-list>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
searchKeyword: null,
sessionId: null,
delegationId: null,
roleId: null
},
}
},
methods: {
historyBack,
onReady(){
},
doSearch() {
this.$nextTick(() => {
this.pageForm.pageNumber = 1
this.pageForm.totalCount = 0
this.$refs.tableListRef.doSearch()
})
}
}
})
</script>
<!--#
}
#-->
@@ -22,8 +22,9 @@ const apps = {
:class="['nav-item', { active: activeTab === index }]"
@click="onClickNav(index)"
>
<div class="nav-icon" v-if="category.icon">
<i :class="category.icon"></i>
<div class="nav-icon">
<i v-if="category.icon" :class="category.icon"></i>
<i v-else class="fa fa-book"></i>
</div>
<div class="nav-text">{{ category.name }}</div>
<div class="nav-indicator" v-if="activeTab === index"></div>
@@ -269,13 +270,6 @@ const apps = {
return
}
// 如果只有一个菜单项,直接跳转
if (menus.length === 1) {
this.navigateToMenu(menus[0])
return
}
// 多个菜单项时显示popup弹框
this.currentApp = app
this.currentMenus = menus
this.showMenuPopup = true
@@ -285,14 +279,11 @@ const apps = {
navigateToMenu(menu) {
// 关闭弹框
this.showMenuPopup = false
if (menu.href) {
// 如果是H5平台,直接跳转
if (menu.platform === 'H5') {
window.location.href = menu.href
} else {
// 其他平台可能需要特殊处理
if(menu.href.startsWith('http://') || menu.href.startsWith('https://')){
window.open(menu.href, '_blank')
}else{
this.$pjaxReplace(menu.href)
}
} else {
this.$toast('该功能暂不可用')
@@ -318,6 +309,12 @@ const apps = {
background: #f7f8fa;
border-right: 1px solid #ebedf0;
overflow-y: auto;
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE and Edge */
}
.tree-nav::-webkit-scrollbar {
display: none; /* Chrome, Safari and Opera */
}
.nav-item {