This commit is contained in:
Paidax
2025-09-17 10:43:22 +08:00
parent 9821aebd0a
commit b7faf07236
12 changed files with 403 additions and 63 deletions
@@ -0,0 +1,67 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyDoctor;
import com.budwk.app.zhgh.staffbenefit.psychology.service.PsychologyDoctorService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.lang.Lang;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zzr
* @namePsychologyIndexController
* @Date 2025/9/12 10:54
* @version 1.0
* @注释
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "心理咨询")
@At("/platform/psychology/index")
public class PsychologyIndexController {
@Inject
private PsychologyDoctorService psychologyDoctorService;
@At("")
// @SaCheckPermission("psychology.index")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/index/index.html")
public void index() {
}
@At
// @SaCheckPermission("psychology.index")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/index/index.html")
public void h5() {
}
@At
@ApiOperation("手机端咨询师列表展示")
// @SaCheckPermission("psychology.index")
public Result listConsultantByH5(){
Pagination<PsychologyDoctor> pagination = psychologyDoctorService.listPage(1, 4, Cnd.NEW());
List<PsychologyDoctor> list = pagination.getList();
// 判断有没有咨询师,并且咨询师数量小于4的话,要顺序填充到4个,便于前端展示
if (Lang.isNotEmpty(list) && list.size() < 4) {
List<PsychologyDoctor> filledList = new ArrayList<>(4);
for (int i = 0; i < 4; i++) {
filledList.add(list.get(i % list.size()));
}
pagination.setList(filledList);
}
return Result.success(pagination.getList());
}
}
@@ -105,7 +105,7 @@ layout("/layouts/platform.html"){
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "subsidyStandards", label: "困难类型", sortable: true },
{ prop: "applyTime", label: "申请时间", sortable: true },
{ prop: "taskName", label: "当前节点" },
{ prop: "curTaskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" }
],
unions: [],
@@ -99,7 +99,7 @@ layout("/layouts/platform.html"){
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "subsidyStandards", label: "困难类型", sortable: true },
{ prop: "applyTime", label: "申请时间", sortable: true },
{ prop: "taskName", label: "当前节点" },
{ prop: "curTaskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" }
],
unions: [],
@@ -125,7 +125,7 @@ layout("/layouts/platform.html"){
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "sign", label: "签字" },
{ prop: "taskName", label: "当前节点" },
{ prop: "curTaskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" }
],
@@ -239,7 +239,7 @@ layout("/layouts/platform.html"){
</template>
</template>-->
<template v-if="">
<template v-if="formData.loginname == $store.state.user.loginname">
<el-descriptions-item label="家庭主要成员" :span="3">
<el-form-item prop="families">
<el-table :data="formData.families" border size="small">
@@ -138,8 +138,6 @@ layout("/layouts/platform.html"){
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
searchKeyword: "",
unionId: "",
unitId: "",
@@ -202,10 +200,11 @@ layout("/layouts/platform.html"){
},
pageData() {
this.tableLoading = true
this.$axios
.post(loc() + "/pageData", {
pageForm: JSON.stringify(this.pageForm)
})
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
this.$axios.post(loc() + "/pageData", pageForm)
.then((data) => {
if (data.code === 0) {
this.tableData = data.data.list
@@ -1,7 +1,7 @@
const INFO = {
template: /*language=HTML*/ `
<van-action-sheet v-model="visible" title="查看详情">
<div>
<div class="detail-container">
<van-cell-group title="基本信息">
<van-cell title="填写人姓名">{{viewData.proxyUserName}}</van-cell>
<van-cell title="填写人工号">{{viewData.proxyLoginName}}</van-cell>
@@ -0,0 +1,31 @@
<!--#
layout("/layouts/platform_h5.html"){
#-->
<div id="app">
<van-sticky>
<van-nav-bar title="咨询师预约" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
</van-sticky>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNum: 1,
pageSize: 10,
searchKeyword: '',
}
}
},
methods: {
historyBack,
},
created() {
}
});
</script>
<!--#
}
#-->
@@ -0,0 +1,62 @@
<!--#
layout("/layouts/platform_h5.html"){
#-->
<style scoped>
.container {
margin: 0 auto;
padding: 15px;
}
</style>
<div id="app">
<van-sticky>
<van-nav-bar title="咨询师列表" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
placeholder="请输入工号或者姓名进行查询"
show-action
:reverse-color="false"
input-align="left"
@search="doSearch">
<template #action>
<div @click="doSearch">搜索</div>
</template>
</van-search>
</van-sticky>
<div class="container">
<div >
<div class="consultant-list">
</div>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
consultantList: []
}
},
methods: {
historyBack,
async pageData(){
const resp = await this.$axios.post('/platform/psychology/index/listConsultantByH5')
if (resp.code === 0) {
this.consultantList = resp.data
}
}
},
created() {
}
});
</script>
<!--#
}
#-->
@@ -0,0 +1,181 @@
<!--#
layout("/layouts/platform_h5.html"){
#-->
<style scoped>
.container {
margin: 0 auto;
padding: 15px;
}
.grid-menu {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
margin-bottom: 20px;
height: 100px;
background: white;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
transition:
transform 0.3s ease,
box-shadow 0.3s ease;
border-radius: 12px;
}
.menu-item {
padding: 10px;
text-align: center;
cursor: pointer;
}
.menu-item img {
border-radius: 8px;
width: 100%;
}
.menu-text {
font-size: 13px;
color: #3498db;
}
.consultant, .article {
margin-bottom: 20px;
height: 200px;
background: white;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
transition:
transform 0.3s ease,
box-shadow 0.3s ease;
border-radius: 12px;
}
.consultant-list {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
padding: 2px 14px;
}
.consultant-title {
display: flex;
justify-content: space-between;
padding: 10px 15px;
}
.consultant-item {
padding: 0;
text-align: center;
cursor: pointer;
}
.consultant-item img {
border-radius: 3px 8px;
border: 1px solid #3498db;
width: 100%;
height: 115px;
}
.consultant-name{
font-size: 14px;
color: #000000;
}
</style>
<div id="app">
<van-nav-bar title="心理咨询" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
<div class="container">
<!-- 入口 -->
<div class="grid-menu">
<div v-for="item in menuList" :key="item.name" class="menu-item" @click="enterQuick">
<div class="menu-icon">
<img slot="icon" :src="item.icon">
</div>
<div class="menu-text">
{{ item.name }}
</div>
</div>
</div>
<!-- 咨询师列表 -->
<div class="consultant">
<div class="consultant-title">
<div style="font-weight: bold;font-size: 19px">
推荐咨询师
</div>
<div style="color: gray;font-size: 14px" @click="showAllConsultant">更多>></div>
</div>
<div v-if="consultantList && consultantList.length > 0" class="consultant-list">
<div v-for="(item, index) in consultantList" :key="index"
class="consultant-item" @click="showConsultant(item)">
<div class="consultant-avatar">
<img slot="icon" :src="item.avatar">
</div>
<div class="consultant-name">
{{ item.userName }}
</div>
</div>
</div>
<div v-else>
<div style="text-align: center;padding: 20px">
暂无数据
</div>
</div>
</div>
<!-- 文章列表 -->
<div class="article">
<div class="article-title" style="padding: 10px 15px;">
<div style="font-weight: bold;font-size: 19px">
文章列表
</div>
</div>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
menuList: [
{name: '通知公告', icon: 'https://img01.yzcdn.cn/vant/apple-1.jpg', url: '/platform/h5/home'},
{name: '预约日历', icon: 'https://img01.yzcdn.cn/vant/apple-1.jpg', url: '/platform/h5/home'},
{name: '分类预约', icon: 'https://img01.yzcdn.cn/vant/apple-1.jpg', url: '/platform/h5/home'},
{name: '咨询师列表', icon: 'https://img01.yzcdn.cn/vant/apple-1.jpg', url: '/platform/h5/home'},
],
consultantList: []
}
},
methods: {
historyBack,
// 快速入口跳转
enterQuick(item) {
console.log(item)
},
// 查看所有咨询师,跳转到咨询师列表页面
showAllConsultant(){
},
// 查看单个咨询师,跳转到这个咨询师的详情页面
showConsultant(item){
console.log(item)
},
// 查询咨询师列表
async listConsultant(){
const resp = await this.$axios.post('/platform/psychology/index/listConsultantByH5')
if (resp.code === 0) {
this.consultantList = resp.data
}
}
},
created() {
this.listConsultant()
}
});
</script>
<!--#
}
#-->
@@ -1,7 +1,7 @@
const INFO = {
template: /*language=HTML*/ `
<van-action-sheet v-model="visible" title="查看详情">
<div>
<div class="detail-container">
<van-cell-group title="基本信息">
<van-cell title="工号">{{ viewData.loginname }}</van-cell>
<van-cell title="姓名">{{ viewData.username }}</van-cell>
@@ -1,63 +1,63 @@
const MOBILE_MEMBER_INFO = {
template: `
<div>
template: /*language=HTML*/ `
<div class="detail-container">
<van-cell-group title="基本信息">
<van-cell title="工号">{{ viewData.loginname }}</van-cell>
<van-cell title="姓名">{{ viewData.username }}</van-cell>
<van-cell title="性别">{{ viewData.sex }}</van-cell>
<van-cell title="工号">{{ viewData.loginname }}</van-cell>
<van-cell title="姓名">{{ viewData.username }}</van-cell>
<van-cell title="性别">{{ viewData.sex }}</van-cell>
<van-cell title="民族">{{ viewData.nation }}</van-cell>
<van-cell title="出生日期">{{ $moment(viewData.birthday).format("YYYY年MM月DD日") }}</van-cell>
<van-cell title="政治面貌">{{ viewData.political }}</van-cell>
<van-cell title="民族">{{ viewData.nation }}</van-cell>
<van-cell title="出生日期">{{ $moment(viewData.birthday).format("YYYY年MM月DD日") }}</van-cell>
<van-cell title="政治面貌">{{ viewData.political }}</van-cell>
<van-cell title="学历">{{ viewData.education }}</van-cell>
<van-cell title="学位">{{ viewData.academicDegree }}</van-cell>
<van-cell title="党政职务">{{ viewData.position }}</van-cell>
<van-cell title="学历">{{ viewData.education }}</van-cell>
<van-cell title="学位">{{ viewData.academicDegree }}</van-cell>
<van-cell title="党政职务">{{ viewData.position }}</van-cell>
<van-cell title="工作单位">{{ viewData.unitName }}</van-cell>
<van-cell title="所属工会">{{ viewData.unionName }}</van-cell>
<van-cell title="所属校区">{{ viewData.campus }}</van-cell>
<van-cell title="工作单位">{{ viewData.unitName }}</van-cell>
<van-cell title="所属工会">{{ viewData.unionName }}</van-cell>
<van-cell title="所属校区">{{ viewData.campus }}</van-cell>
<van-cell title="身份证号码">{{ viewData.idCard }}</van-cell>
<van-cell title="联系电话">{{ viewData.mobile }}</van-cell>
<van-cell title="电子邮箱">{{ viewData.email }}</van-cell>
<van-cell title="身份证号码">{{ viewData.idCard }}</van-cell>
<van-cell title="联系电话">{{ viewData.mobile }}</van-cell>
<van-cell title="电子邮箱">{{ viewData.email }}</van-cell>
<van-cell title="在职状态">{{ viewData.userState }}</van-cell>
<van-cell title="人员类型">{{ viewData.personType }}</van-cell>
<van-cell title="人员性质">{{ viewData.preparedBy || '暂无' }}</van-cell>
<van-cell title="在职状态">{{ viewData.userState }}</van-cell>
<van-cell title="人员类型">{{ viewData.personType }}</van-cell>
<van-cell title="人员性质">{{ viewData.preparedBy || '暂无' }}</van-cell>
<template v-if="viewData.loginname === $store.state.user.loginnmae">
<van-cell title="家庭成员" class="column-cell">
<table class="family-table">
<thead>
<tr>
<th class="table-header">序号</th>
<th class="table-header">与本人关系</th>
<th class="table-header">姓名</th>
<th class="table-header">单位</th>
<th class="table-header">备注</th>
</tr>
</thead>
<tbody>
<tr class="table-row" v-for="(item, index) in viewData.families" :key="index">
<td class="table-cell">{{ index + 1 }}</td>
<td class="table-cell">{{ item.relation }}</td>
<td class="table-cell">{{ item.name }}</td>
<td class="table-cell">{{ item.unit }}</td>
<td class="table-cell">{{ item.remark }}</td>
</tr>
</tbody>
</table>
</van-cell>
<template v-if="viewData.loginname === $store.state.user.loginnmae">
<van-cell title="家庭成员" class="column-cell">
<table class="family-table">
<thead>
<tr>
<th class="table-header">序号</th>
<th class="table-header">与本人关系</th>
<th class="table-header">姓名</th>
<th class="table-header">单位</th>
<th class="table-header">备注</th>
</tr>
</thead>
<tbody>
<tr class="table-row" v-for="(item, index) in viewData.families" :key="index">
<td class="table-cell">{{ index + 1 }}</td>
<td class="table-cell">{{ item.relation }}</td>
<td class="table-cell">{{ item.name }}</td>
<td class="table-cell">{{ item.unit }}</td>
<td class="table-cell">{{ item.remark }}</td>
</tr>
</tbody>
</table>
</van-cell>
<van-cell title="个人简历">
<template #label>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
<span style="font-size: 14px" v-else>无数据</span>
</template>
</van-cell>
</template>
</van-cell-group>
<van-cell title="个人简历">
<template #label>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
<span style="font-size: 14px" v-else>无数据</span>
</template>
</van-cell>
</template>
</van-cell-group>
</div>
`,
props: {