1.去除无用字段和按钮

2.新增修改密码功能
3.修复拒收红包审核详情
4.修复加减分审核缺失驳回原因
5.修复所有页面考评对象增加工号
6.修复所有日期选择限制当前时间
7.修复月度,季度,年度评价查询问题
This commit is contained in:
Air 2025-04-02 17:38:30 +08:00
parent 1e6b3310c9
commit c0399f38f2
30 changed files with 272 additions and 222 deletions

2
auto-imports.d.ts vendored
View File

@ -1,5 +1,5 @@
// Generated by 'unplugin-auto-import' // Generated by 'unplugin-auto-import'
export {} export {}
declare global { declare global {
const layer: typeof import('@layui/layer-vue')['layer']
} }

3
components.d.ts vendored
View File

@ -48,10 +48,7 @@ declare module 'vue' {
LaySelect: typeof import('@layui/layui-vue')['LaySelect'] LaySelect: typeof import('@layui/layui-vue')['LaySelect']
LaySelectOption: typeof import('@layui/layui-vue')['LaySelectOption'] LaySelectOption: typeof import('@layui/layui-vue')['LaySelectOption']
LaySide: typeof import('@layui/layui-vue')['LaySide'] LaySide: typeof import('@layui/layui-vue')['LaySide']
LaySkeleton: typeof import('@layui/layui-vue')['LaySkeleton']
LaySpace: typeof import('@layui/layui-vue')['LaySpace'] LaySpace: typeof import('@layui/layui-vue')['LaySpace']
LayStep: typeof import('@layui/layui-vue')['LayStep']
LayStepItem: typeof import('@layui/layui-vue')['LayStepItem']
LaySubMenu: typeof import('@layui/layui-vue')['LaySubMenu'] LaySubMenu: typeof import('@layui/layui-vue')['LaySubMenu']
LaySwitch: typeof import('@layui/layui-vue')['LaySwitch'] LaySwitch: typeof import('@layui/layui-vue')['LaySwitch']
LayTab: typeof import('@layui/layui-vue')['LayTab'] LayTab: typeof import('@layui/layui-vue')['LayTab']

View File

@ -506,6 +506,15 @@ export function getMailUpdateMail(data: any) {
export function getYearEvaluationSummary(data: any) { export function getYearEvaluationSummary(data: any) {
return Http.post('/api/backend/year/data', data) return Http.post('/api/backend/year/data', data)
} }
// 密码修改
export function updatePassword(data: any) {
return Http.post('/api/backend/user/updatePassword', data)
}
// 自动公示
export function automaticPublicity(data: any) {
return Http.post('/api/backend/automatic_publicity/index', data)
}

View File

@ -152,7 +152,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, onMounted, ref } from 'vue' import { computed, onMounted, reactive, ref } from 'vue'
import { useAppStore } from '../store/app' import { useAppStore } from '../store/app'
import { useUserStore } from '../store/user' import { useUserStore } from '../store/user'
import GlobalSetup from './global/GlobalSetup.vue' import GlobalSetup from './global/GlobalSetup.vue'
@ -166,7 +166,9 @@ import { useRouter } from 'vue-router'
import { useMenu } from './composable/useMenu' import { useMenu } from './composable/useMenu'
import zh_CN from '../lang/zh_CN' import zh_CN from '../lang/zh_CN'
import en_US from '../lang/en_US' import en_US from '../lang/en_US'
import { updatePassword } from '@/api/module/home'
import { layer } from '@layui/layui-vue'
//const userStore = useUserStore()
export default { export default {
components: { components: {
GlobalSetup, GlobalSetup,
@ -254,10 +256,11 @@ export default {
flag.value = !flag.value flag.value = !flag.value
} }
const model = ref({ const model = reactive({
old_password: '', old_password: '',
new_password: '', new_password: '',
confirm_password: '' confirm_password: '',
id: 0,
}) })
const showPassword = ref(false) const showPassword = ref(false)
function changePassword() { function changePassword() {
@ -267,7 +270,15 @@ export default {
{ {
text: "确认", text: "确认",
callback: async () => { callback: async () => {
console.log(123) const userInfoStore = useUserStore()
model.id = userInfoStore.userInfo.id;
var res = await updatePassword(model);
if (res.code == 1) {
layer.msg('修改成功!', { icon: 1 })
showPassword.value = false;
} else {
layer.msg(res.msg, { icon: 2 })
}
} }
}, },
{ {

View File

@ -231,25 +231,26 @@ export default [
// } // }
// ] // ]
// }, // },
{ // {
path: '/outside_evaluation', // path: '/outside_evaluation',
redirect: '/outside_evaluation/index', // redirect: '/outside_evaluation/index',
component: BasicLayout, // component: BasicLayout,
meta: { title: '院外考评' }, // meta: { title: '院外考评' },
children: [ // children: [
{ // {
path: '/outside_evaluation/index', // path: '/outside_evaluation/index',
name: 'outsideEvaluationIndex', // name: 'outsideEvaluationIndex',
component: () => import('../../views/day_evaluation/index.vue'), // component: () => import('../../views/day_evaluation/index.vue'),
meta: { title: '我的院外考评', requireAuth: true, closable: true }, // meta: { title: '我的院外考评', requireAuth: true, closable: true },
}, { // }, {
path: '/outside_evaluation/examine', // path: '/outside_evaluation/examine',
name: 'outsideEvaluationExamine', // name: 'outsideEvaluationExamine',
component: () => import('../../views/day_evaluation/examine.vue'), // component: () => import('../../views/day_evaluation/examine.vue'),
meta: { title: '院外考评管理', requireAuth: true, closable: true }, // meta: { title: '院外考评管理', requireAuth: true, closable: true },
} // }
] // ]
}, { // },
,{
path: '/year_evaluation', path: '/year_evaluation',
redirect: '/year_evaluation/index', redirect: '/year_evaluation/index',
component: BasicLayout, component: BasicLayout,
@ -321,12 +322,13 @@ export default [
name: 'yearEvaluationSummaryExamine', name: 'yearEvaluationSummaryExamine',
component: () => import('../../views/year_evaluation_summary/examine.vue'), component: () => import('../../views/year_evaluation_summary/examine.vue'),
meta: { title: '考评汇总', requireAuth: true, closable: true }, meta: { title: '考评汇总', requireAuth: true, closable: true },
}, { },
path: '/year_evaluation_summary/statistics', // {
name: 'yearEvaluationSummaryStatistics', // path: '/year_evaluation_summary/statistics',
component: () => import('../../views/year_evaluation_summary/statistics.vue'), // name: 'yearEvaluationSummaryStatistics',
meta: { title: '统计分析', requireAuth: true, closable: true }, // component: () => import('../../views/year_evaluation_summary/statistics.vue'),
} // meta: { title: '统计分析', requireAuth: true, closable: true },
// }
] ]
}, { }, {
path: '/census', path: '/census',

View File

@ -3,6 +3,7 @@ import { defineStore } from 'pinia'
import menu from "../mockjs/user"; import menu from "../mockjs/user";
import {getMenu} from "@/api/module/home"; import {getMenu} from "@/api/module/home";
import router from '@/router';
interface Tab { interface Tab {
id: string id: string
@ -24,7 +25,12 @@ export const useUserStore = defineStore({
actions: { actions: {
async loadMenus(){ async loadMenus(){
const data = await getMenu({}); const data = await getMenu({});
this.menus = data.data; if(data.code == 1){
this.menus = data.data;
}else{
this.menus = [];
router.push('/login')
}
console.log(data); console.log(data);
}, },
async loadPermissions(){ async loadPermissions(){

View File

@ -3,7 +3,7 @@
<lay-card> <lay-card>
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">加扣分项列表</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">加扣分项列表</span>
<lay-button size="sm" border="green" @click="addShowMsd()">新增</lay-button> <lay-button size="sm" type="primary" @click="addShowMsd()">新增</lay-button>
</div> </div>
<lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6" <lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6"
:data-source="dataSource6"> :data-source="dataSource6">

View File

@ -3,7 +3,7 @@
<lay-card> <lay-card>
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">基础评分列表</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">基础评分列表</span>
<lay-button size="sm" border="green" @click="addShow=true;addData.pid=0;addData.id=0;addIsEdit=1;">新增</lay-button> <lay-button size="sm" type="primary" @click="addShow=true;addData.pid=0;addData.id=0;addIsEdit=1;">新增</lay-button>
</div> </div>
<lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6" <lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6"
:data-source="dataSource6"> :data-source="dataSource6">

View File

@ -22,7 +22,7 @@
<div style="flex: 1; padding: 10px;"> <div style="flex: 1; padding: 10px;">
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">考评级别设置</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">考评级别设置</span>
<lay-button type="primary" @click="openNew()" size="sm">新增记录</lay-button> <lay-button type="primary" @click="openNew()" size="sm">新增</lay-button>
</div> </div>
<lay-table :page="page" :height="'100%'" :columns="columns" :loading="loading" :data-source="dataSource" <lay-table :page="page" :height="'100%'" :columns="columns" :loading="loading" :data-source="dataSource"
v-model:selected-keys="selectedKeys" @change="change" @sortChange="sortChange"> v-model:selected-keys="selectedKeys" @change="change" @sortChange="sortChange">

View File

@ -26,14 +26,14 @@
<lay-row style="min-width: 1200px"> <lay-row style="min-width: 1200px">
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="发生时间:"> <lay-form-item label="发生时间:">
<lay-date-picker style="width: 100%" v-model="searchForm.fsdate" placeholder="发生时间" <lay-date-picker style="width: 100%" :max="dayjs().format('YYYY-MM-DD')" v-model="searchForm.fsdate" placeholder="发生时间"
allow-clear></lay-date-picker> allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象:"> <lay-form-item label="考评对象:">
<lay-select v-model="searchForm.user_id" placeholder="请选择考评对象" :show-search="true"> <lay-select v-model="searchForm.user_id" placeholder="请选择考评对象" :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id" :label="user.nickname"> <lay-select-option v-for="user in userList" :key="user.id" :value="user.id" :label="user.nickname+'('+user.code+')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -90,7 +90,7 @@
<lay-layer v-model="detailVisible" :type="4" title="详情查看" :area="['950px', '100%']" <lay-layer v-model="detailVisible" :type="4" title="详情查看" :area="['950px', '100%']"
:btn="showType == 1 ? '' : addButton"> :btn="showType == 1 ? '' : addButton">
<div style="padding: 20px"> <div style="padding: 20px">
<lay-descriptions title="考评信息" :column="2" border> <lay-descriptions title="审核信息" :column="2" border>
<lay-descriptions-item label="考评人"> <lay-descriptions-item label="考评人">
{{ detailForm.nickname }} {{ detailForm.nickname }}
</lay-descriptions-item> </lay-descriptions-item>
@ -124,6 +124,11 @@
<a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a> <a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a>
</lay-descriptions-item> </lay-descriptions-item>
</lay-descriptions> </lay-descriptions>
<lay-descriptions v-if="detailForm.status == 3 " title="驳回原因" :column="1" border style="margin-top: 20px">
<lay-descriptions-item label="驳回原因">
{{ detailForm.content }}
</lay-descriptions-item>
</lay-descriptions>
<lay-descriptions v-if="showType == 2" title="审核" :column="1" border style="margin-top: 20px"> <lay-descriptions v-if="showType == 2" title="审核" :column="1" border style="margin-top: 20px">
<lay-descriptions-item label="状态"> <lay-descriptions-item label="状态">
<lay-radio-group name="action" v-model="type"> <lay-radio-group name="action" v-model="type">
@ -145,7 +150,9 @@ import { layer } from '@layui/layui-vue'
import { getAdditionIndexManage, getAdditionIndexManageExamine, getDoctorName, getSolicitopinionsPlexamine, getUserGroupNew } from '@/api/module/home'; import { getAdditionIndexManage, getAdditionIndexManageExamine, getDoctorName, getSolicitopinionsPlexamine, getUserGroupNew } from '@/api/module/home';
import { useUserStore } from '@/store/user'; import { useUserStore } from '@/store/user';
import { baseURL } from '@/api/http'; import { baseURL } from '@/api/http';
import dayjs from 'dayjs'
const userStore = useUserStore() const userStore = useUserStore()
const exportExcel = () => { const exportExcel = () => {
if (selectedKeys.value.length == 0) { if (selectedKeys.value.length == 0) {
layer.msg('请选择要导出的数据', { icon: 2 }) layer.msg('请选择要导出的数据', { icon: 2 })
@ -191,7 +198,7 @@ const batchAudit = (type: number) => {
layer.msg('请输入驳回原因', { icon: 2 }) layer.msg('请输入驳回原因', { icon: 2 })
return return
} }
getSolicitopinionsPlexamine({ ids: ids, reason: data, status: 3 }).then((res) => { getSolicitopinionsPlexamine({ ids: ids, content: data, status: 3 }).then((res) => {
console.log(res); console.log(res);
if (res.code == 1) { if (res.code == 1) {
layer.msg(res.msg, { icon: 1 }) layer.msg(res.msg, { icon: 1 })
@ -331,18 +338,7 @@ const columns = ref([
]) ])
const dataSource = ref() const dataSource = ref()
const detailVisible = ref(false) const detailVisible = ref(false)
const detailForm = ref({ const detailForm = ref({})
nickname: '',
group_name: '',
fsdate: '',
zm_nickname: '',
assessment_type: '',
project_name: '',
score_value: '',
notes: '',
status: 1,
fj_url: ''
})
// //
const searchForm = ref({ const searchForm = ref({
fsdate: '', fsdate: '',
@ -354,6 +350,7 @@ const searchForm = ref({
const showType = ref(1) const showType = ref(1)
// //
const showDetail = (row: any, type: number) => { const showDetail = (row: any, type: number) => {
console.log(row);
detailForm.value = row detailForm.value = row
detailVisible.value = true; detailVisible.value = true;
showType.value = type; showType.value = type;
@ -364,7 +361,7 @@ const addButton = ref([
{ {
text: "确认", text: "确认",
callback: async () => { callback: async () => {
getAdditionIndexManageExamine({ id: isId.value, status: type.value }).then((res) => { getAdditionIndexManageExamine({ id: isId.value, status: type.value, content: reason.value }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
layer.msg(res.msg, { icon: 1 }) layer.msg(res.msg, { icon: 1 })
} else { } else {

View File

@ -63,7 +63,7 @@
<lay-form :model="formData"> <lay-form :model="formData">
<lay-form-item required label="考评对象" prop="user_id"> <lay-form-item required label="考评对象" prop="user_id">
<lay-select v-model="formData.user_id" placeholder="请选择考评对象" :show-search="true"> <lay-select v-model="formData.user_id" placeholder="请选择考评对象" :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id" :label="user.nickname"> <lay-select-option v-for="user in userList" :key="user.id" :value="user.id" :label="user.nickname+'('+user.code+')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -84,11 +84,11 @@
<lay-input-number :max="maxInput.single_score_max" :min="maxInput.single_score_min" v-model="formData.score_value" placeholder="请输入分值"></lay-input-number> <lay-input-number :max="maxInput.single_score_max" :min="maxInput.single_score_min" v-model="formData.score_value" placeholder="请输入分值"></lay-input-number>
</lay-form-item> </lay-form-item>
<lay-form-item required label="发生时间" prop="fsdate"> <lay-form-item required label="发生时间" prop="fsdate">
<lay-date-picker v-model="formData.fsdate" placeholder="发生时间" type="datetime"></lay-date-picker> <lay-date-picker v-model="formData.fsdate" :max="dayjs().format('YYYY-MM-DD')" placeholder="发生时间" type="datetime"></lay-date-picker>
</lay-form-item> </lay-form-item>
<lay-form-item required label="证明人" prop="zm_user_id"> <lay-form-item required label="证明人" prop="zm_user_id">
<lay-select v-model="formData.zm_user_id" placeholder="请选择证明人" :show-search="true"> <lay-select v-model="formData.zm_user_id" placeholder="请选择证明人" :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id" :label="user.nickname"> <lay-select-option v-for="user in userList" :key="user.id" :value="user.id" :label="user.nickname+'('+user.code+')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -163,6 +163,7 @@ import { ref, reactive, onMounted } from 'vue'
import { layer } from '@layui/layer-vue' import { layer } from '@layui/layer-vue'
import { scoringGetHierarchicalData, getDoctorName, getAddition, getAdditionCreate, getAdditionUpdate, getAdditionDelete } from '@/api/module/home' import { scoringGetHierarchicalData, getDoctorName, getAddition, getAdditionCreate, getAdditionUpdate, getAdditionDelete } from '@/api/module/home'
import { useUserStore } from '@/store/user' import { useUserStore } from '@/store/user'
import dayjs from 'dayjs'
interface EvaluationItem { interface EvaluationItem {
id: number id: number

View File

@ -26,7 +26,7 @@
<lay-row style="min-width: 1200px"> <lay-row style="min-width: 1200px">
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="月份:" :label-width="100"> <lay-form-item label="月份:" :label-width="100">
<lay-date-picker type="yearmonth" style="width: 100%" v-model="searchForm.month" <lay-date-picker :max="dayjs().format('YYYY-MM')" type="yearmonth" style="width: 100%" v-model="searchForm.month"
placeholder="发生时间" allow-clear></lay-date-picker> placeholder="发生时间" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -7,8 +7,8 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度:" label-width="50"> <lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" v-model="searchAccount" placeholder="请选择" <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount"
allow-clear></lay-date-picker> placeholder="请选择" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="4"> <lay-col :md="4">
@ -27,10 +27,9 @@
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">月度评价填报</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">月度评价填报</span>
<lay-button type="primary" @click="addShow = true" size="sm">新增自我评价</lay-button> <lay-button type="primary" @click="addShow = true" size="sm">新增自我评价</lay-button>
</div> </div>
<lay-table :columns="columns" :dataSource="dataSource" :even="true" height="500px" <lay-table :columns="columns" :dataSource="dataSource" :even="true" height="500px" size="lg">
size="lg">
<template #group_evaluation="scope"> <template #group_evaluation="scope">
<span>{{ scope.row.group_evaluation? scope.row.group_evaluation : '未评价'}}</span> <span>{{ scope.row.group_evaluation ? scope.row.group_evaluation : '未评价' }}</span>
</template> </template>
<template #operator="scope"> <template #operator="scope">
<span style="cursor: pointer;color: #009688" @click="toDetail(scope.row)">详情</span> <span style="cursor: pointer;color: #009688" @click="toDetail(scope.row)">详情</span>
@ -58,7 +57,8 @@
<div style="margin-bottom: 20px">评价时间{{ infoData.selftime }}</div> <div style="margin-bottom: 20px">评价时间{{ infoData.selftime }}</div>
<div style="margin-bottom: 20px">我的评价{{ infoData.self_evaluation }}</div> <div style="margin-bottom: 20px">我的评价{{ infoData.self_evaluation }}</div>
<div style="margin-bottom: 20px">科室{{ infoData.group_name }}</div> <div style="margin-bottom: 20px">科室{{ infoData.group_name }}</div>
<div style="margin-bottom: 20px">科室评价{{ infoData.group_evaluation? infoData.group_evaluation : '未评价' }}</div> <div style="margin-bottom: 20px">科室评价{{ infoData.group_evaluation ? infoData.group_evaluation : '未评价' }}
</div>
</lay-container> </lay-container>
</lay-layer> </lay-layer>
</lay-container> </lay-container>
@ -92,10 +92,12 @@ onMounted(() => {
//getMonthlyContent(); //getMonthlyContent();
}) })
const getMonthlyEvaluation = () => { const getMonthlyEvaluation = () => {
monthlyEvaluation({ 'type': 1 }).then((res) => { monthlyEvaluation({ 'type': 1, 'time': searchAccount.value }).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
dataSource.value = res.data; dataSource.value = res.data;
} else {
dataSource.value = [];
} }
}) })
} }
@ -103,6 +105,10 @@ const searchAccount = ref(dayjs().year())
function toReset() { function toReset() {
searchAccount.value = dayjs().year() searchAccount.value = dayjs().year()
getMonthlyEvaluation();
}
const toSearch = () => {
getMonthlyEvaluation();
} }
const columns = [ const columns = [
{ {
@ -128,7 +134,7 @@ const columns = [
key: 'self_evaluation', key: 'self_evaluation',
ellipsisTooltip: true, ellipsisTooltip: true,
align: 'center', align: 'center',
},{ }, {
title: '科室', title: '科室',
key: 'group_name', key: 'group_name',
align: 'center', align: 'center',

View File

@ -16,21 +16,22 @@
<lay-icon v-else class="layui-icon-right"></lay-icon> <lay-icon v-else class="layui-icon-right"></lay-icon>
</div> </div>
</div> </div>
<div style="flex: 1; padding: 10px; over-flow: auto"> <div style="flex: 1; padding: 10px; overflow: auto">
<!-- table --> <!-- table -->
<lay-card> <lay-card>
<lay-form> <lay-form>
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="月度" label-width="80"> <lay-form-item label="月度" label-width="80">
<lay-date-picker type="yearmonth" v-model="yearmonth" placeholder="月度" allow-clear></lay-date-picker> <lay-date-picker type="yearmonth" :max="dayjs().format('YYYY-MM')" v-model="yearmonth"
placeholder="月度" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="120"> <lay-form-item label="考评对象" label-width="120">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" <lay-select-option v-for="item in dataSerSource" :value="item.id"
:label="item.nickname"></lay-select-option> :label="item.nickname + '(' + item.code + ')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
@ -106,8 +107,8 @@
</template> </template>
<template v-slot:department_score="{ row, rowIndex }"> <template v-slot:department_score="{ row, rowIndex }">
<div v-if="row.pid == 0">已评分{{ row.department_score ? row.department_score : 0 }}</div> <div v-if="row.pid == 0">已评分{{ row.department_score ? row.department_score : 0 }}</div>
<lay-input-number :disabled="addIsInfo==1" @change="inputKsChange(row)" v-if="row.pid != 0" :min="0" :max="row.base_score" v-model="row.department_score" <lay-input-number :disabled="addIsInfo == 1" @change="inputKsChange(row)" v-if="row.pid != 0" :min="0"
position="right"></lay-input-number> :max="row.base_score" v-model="row.department_score" position="right"></lay-input-number>
</template> </template>
<!-- <template v-slot:yyinput="{ data, rowIndex }"> <!-- <template v-slot:yyinput="{ data, rowIndex }">
<template v-if="userStore.userInfo.level == 3 || thisInfo.scoringrecord_status == 4"> <template v-if="userStore.userInfo.level == 3 || thisInfo.scoringrecord_status == 4">
@ -242,15 +243,21 @@ const userShow = ref(false);
const userColumns = ref([ const userColumns = ref([
{ title: '月度', width: '80px', key: 'month', align: 'center' }, { title: '月度', width: '80px', key: 'month', align: 'center' },
{ title: '考评对象', width: '100px', key: 'user', align: 'center' }, { title: '考评对象', width: '100px', key: 'user', align: 'center' },
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{ {
return row.createtime==''||row.createtime==null?'未参评':row.createtime; title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({ row }) => {
} }, return row.createtime == '' || row.createtime == null ? '未参评' : row.createtime;
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center', customSlot: ({row})=>{ }
return row.self_score==''||row.self_score==0?'未评分':row.self_score; },
} }, {
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({row})=>{ title: '自评总分', width: '100px', key: 'self_score', align: 'center', customSlot: ({ row }) => {
return row.department_score==''||row.department_score==0?'未评分':row.department_score; return row.self_score == '' || row.self_score == 0 ? '未评分' : row.self_score;
} }, }
},
{
title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({ row }) => {
return row.department_score == '' || row.department_score == 0 ? '未评分' : row.department_score;
}
},
// { title: '', width: '100px', key: 'hospital_score', align: 'center' }, // { title: '', width: '100px', key: 'hospital_score', align: 'center' },
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' }, { title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' }, { title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
@ -325,7 +332,7 @@ const infoShow = ref(false);
const yearmonth = ref(); const yearmonth = ref();
const getList = () => { const getList = () => {
getMonthlyUserList({ getMonthlyUserList({
'user_id': userId.value, 'user_id':userId.value,
'group_id': group_id.value, 'group_id': group_id.value,
'time': yearmonth.value, 'time': yearmonth.value,
'evaluation_schedule_id': tab_id.value, 'evaluation_schedule_id': tab_id.value,
@ -347,7 +354,7 @@ const getSerList = () => {
'group_id': group_id.value, 'group_id': group_id.value,
'evaluation_schedule_id': tab_id.value, 'evaluation_schedule_id': tab_id.value,
page: 1, page: 1,
size: 999 size: 9999
}).then((res) => { }).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
@ -357,6 +364,12 @@ const getSerList = () => {
} }
}) })
} }
const handleClick = (d) => {
console.log(d);
group_id.value = d.id;
getList();
getSerList();
}
const thisInfo = ref(); const thisInfo = ref();
const getInfo = (row, type) => { const getInfo = (row, type) => {
infoShow.value = true; infoShow.value = true;
@ -452,12 +465,16 @@ const columns = ref([
{ title: '工号', width: '100px', key: 'code', align: 'center' }, { title: '工号', width: '100px', key: 'code', align: 'center' },
{ title: '部门', width: '120px', key: 'group_name', align: 'center' }, { title: '部门', width: '120px', key: 'group_name', align: 'center' },
// { title: '', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' }, // { title: '', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({row})=>{ {
return row.user_scoringrecord==''||row.user_scoringrecord==0?'未评分':row.user_scoringrecord; title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({ row }) => {
} }, return row.user_scoringrecord == '' || row.user_scoringrecord == 0 ? '未评分' : row.user_scoringrecord;
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({row})=>{ }
return row.department_score_scoringrecord==''||row.department_score_scoringrecord==0?'未评分':row.department_score_scoringrecord; },
} }, {
title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({ row }) => {
return row.department_score_scoringrecord == '' || row.department_score_scoringrecord == 0 ? '未评分' : row.department_score_scoringrecord;
}
},
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' }, { title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
{ {
title: '操作', title: '操作',

View File

@ -7,7 +7,7 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度:" label-width="50"> <lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" v-model="searchAccount" placeholder="请选择" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount" placeholder="请选择" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="4"> <lay-col :md="4">
@ -24,7 +24,7 @@
<lay-card> <lay-card>
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">月度自评列表</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">月度自评列表</span>
<lay-button type="primary" size="sm">导出Excel</lay-button> <!-- <lay-button type="primary" size="sm">导出Excel</lay-button> -->
</div> </div>
<lay-tab v-model="current1" @change="openTab"> <lay-tab v-model="current1" @change="openTab">
<lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id"> <lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id">

View File

@ -30,7 +30,7 @@
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="发生时间:" :label-width="100"> <lay-form-item label="发生时间:" :label-width="100">
<lay-date-picker style="width: 100%" v-model="searchForm.fsdate" <lay-date-picker style="width: 100%" v-model="searchForm.fsdate"
placeholder="发生时间" allow-clear></lay-date-picker> placeholder="发生时间" :max="dayjs().format('YYYY-MM-DD')" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6" v-if="userStore.userInfo.level == 1"> <lay-col :md="6" v-if="userStore.userInfo.level == 1">
@ -38,7 +38,7 @@
<lay-select v-model="searchForm.user_id" placeholder="请选择考评对象" <lay-select v-model="searchForm.user_id" placeholder="请选择考评对象"
:show-search="true"> :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" <lay-select-option v-for="user in userList" :key="user.id"
:value="user.id" :label="user.nickname"> :value="user.id" :label="user.nickname + '(' + user.code + ')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -156,7 +156,7 @@
<a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a> <a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a>
</lay-descriptions-item> </lay-descriptions-item>
</lay-descriptions> </lay-descriptions>
<lay-descriptions v-if="detailForm.status == 1" title="审核" :column="1" border style="margin-top: 20px"> <lay-descriptions v-if="detailForm.status == 1 && addIsInfo == 2" title="审核" :column="1" border style="margin-top: 20px">
<lay-descriptions-item label="状态"> <lay-descriptions-item label="状态">
<lay-radio-group name="action" v-model="type"> <lay-radio-group name="action" v-model="type">
<lay-radio :value="2">通过</lay-radio> <lay-radio :value="2">通过</lay-radio>
@ -177,6 +177,7 @@ import { getDoctorName, getRejectRedEnvelopes, rejectRedEnvelopesCreate, rejectR
import { layer } from '@layui/layui-vue'; import { layer } from '@layui/layui-vue';
import { useUserStore } from '@/store/user'; import { useUserStore } from '@/store/user';
import { baseURL } from '@/api/http'; import { baseURL } from '@/api/http';
import dayjs from 'dayjs';
const userStore = useUserStore() const userStore = useUserStore()
// //
const searchForm = ref({ const searchForm = ref({

View File

@ -11,7 +11,7 @@
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="发生时间:" :label-width="100"> <lay-form-item label="发生时间:" :label-width="100">
<lay-date-picker style="width: 100%" v-model="searchForm.fsdate" <lay-date-picker style="width: 100%" v-model="searchForm.fsdate"
placeholder="发生时间" allow-clear></lay-date-picker> placeholder="发生时间" :max="dayjs().format('YYYY-MM-DD')" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6" v-if="userStore.userInfo.level == 1"> <lay-col :md="6" v-if="userStore.userInfo.level == 1">
@ -19,7 +19,7 @@
<lay-select v-model="searchForm.user_id" placeholder="请选择考评对象" <lay-select v-model="searchForm.user_id" placeholder="请选择考评对象"
:show-search="true"> :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" <lay-select-option v-for="user in userList" :key="user.id"
:value="user.id" :label="user.nickname"> :value="user.id" :label="user.nickname+'('+user.code+')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -86,7 +86,7 @@
<lay-form-item label="考评对象" required prop="user_id"> <lay-form-item label="考评对象" required prop="user_id">
<lay-select disabled v-model="form.user_id" placeholder="请选择考评对象" :show-search="true"> <lay-select disabled v-model="form.user_id" placeholder="请选择考评对象" :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id" <lay-select-option v-for="user in userList" :key="user.id" :value="user.id"
:label="user.nickname"> :label="user.nickname+'('+user.code+')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -96,12 +96,12 @@
</lay-cascader> </lay-cascader>
</lay-form-item> --> </lay-form-item> -->
<lay-form-item label="发生日期" required prop="fsdate"> <lay-form-item label="发生日期" required prop="fsdate">
<lay-date-picker v-model="form.fsdate" placeholder="请选择发生日期"></lay-date-picker> <lay-date-picker v-model="form.fsdate" :max="dayjs().format('YYYY-MM-DD')" placeholder="请选择发生日期"></lay-date-picker>
</lay-form-item> </lay-form-item>
<lay-form-item label="证明人" required prop="zm_user_id"> <lay-form-item label="证明人" required prop="zm_user_id">
<lay-select v-model="form.zm_user_id" placeholder="请选择证明人" :show-search="true"> <lay-select v-model="form.zm_user_id" placeholder="请选择证明人" :show-search="true">
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id" <lay-select-option v-for="user in userList" :key="user.id" :value="user.id"
:label="user.nickname"> :label="user.nickname+'('+user.code+')'">
</lay-select-option> </lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
@ -116,7 +116,7 @@
placeholder="请输入退还金额"></lay-input-number> placeholder="请输入退还金额"></lay-input-number>
</lay-form-item> </lay-form-item>
<lay-form-item label="退还日期" required prop="thdate"> <lay-form-item label="退还日期" required prop="thdate">
<lay-date-picker v-model="form.thdate" placeholder="请选择退还日期"></lay-date-picker> <lay-date-picker v-model="form.thdate" :max="dayjs().format('YYYY-MM-DD')" placeholder="请选择退还日期"></lay-date-picker>
</lay-form-item> </lay-form-item>
<lay-form-item label="退还方式" required prop="refunding_type" > <lay-form-item label="退还方式" required prop="refunding_type" >
<lay-select v-model="form.refunding_type" placeholder="请选择退还方式"> <lay-select v-model="form.refunding_type" placeholder="请选择退还方式">

View File

@ -7,7 +7,7 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度:" label-width="50"> <lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" v-model="searchAccount" placeholder="请选择" <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount" placeholder="请选择"
allow-clear></lay-date-picker> allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
@ -98,11 +98,16 @@ onMounted(() => {
getMonthlyEvaluation(); getMonthlyEvaluation();
//getMonthlyContent(); //getMonthlyContent();
}) })
const toSearch = () => {
getMonthlyEvaluation();
}
const getMonthlyEvaluation = () => { const getMonthlyEvaluation = () => {
monthlyEvaluation({ 'type': 2 }).then((res) => { monthlyEvaluation({ 'type': 2, 'time': searchAccount.value }).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
dataSource.value = res.data; dataSource.value = res.data;
} else {
dataSource.value = [];
} }
}) })
} }
@ -110,6 +115,7 @@ const searchAccount = ref(dayjs().year())
function toReset() { function toReset() {
searchAccount.value = dayjs().year() searchAccount.value = dayjs().year()
getMonthlyEvaluation();
} }
const columns = [ const columns = [
{ {

View File

@ -16,7 +16,7 @@
<lay-icon v-else class="layui-icon-right"></lay-icon> <lay-icon v-else class="layui-icon-right"></lay-icon>
</div> </div>
</div> </div>
<div style="flex: 1; padding: 10px; over-flow: auto"> <div style="flex: 1; padding: 10px; overflow: auto">
<!-- table --> <!-- table -->
<lay-card> <lay-card>
<lay-form> <lay-form>
@ -39,7 +39,7 @@
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="80px"> <lay-form-item label="考评对象" label-width="80px">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" :label="item.nickname"></lay-select-option> <lay-select-option v-for="item in dataSerSource" :value="item.id" :label="item.nickname+'('+item.code+')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
@ -415,12 +415,17 @@ function toReset() {
evaluateTarget: '', evaluateTarget: '',
status: '' status: ''
} }
userId.value = '';
getList();
getSserList();
} }
function handleClick(node: any) { function handleClick(node: any) {
// selectedNode.value = JSON.parse(JSON.stringify(node)) // selectedNode.value = JSON.parse(JSON.stringify(node))
page.current = 1; page.current = 1;
group_id.value = node.id;
getList(); getList();
getSserList();
// change(page) // change(page)
} }

View File

@ -7,7 +7,7 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度:" label-width="50"> <lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" v-model="searchAccount" placeholder="请选择" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount" placeholder="请选择" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="4"> <lay-col :md="4">
@ -24,12 +24,11 @@
<lay-card> <lay-card>
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">季度自评列表</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">季度自评列表</span>
<lay-button type="primary" size="sm">导出Excel</lay-button> <!-- <lay-button type="primary" size="sm">导出Excel</lay-button> -->
</div> </div>
<lay-tab v-model="current1" @change="openTab"> <lay-tab v-model="current1" @change="openTab">
<lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id"></lay-tab-item> <lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id">
</lay-tab> <lay-table :columns="columns" :dataSource="dataSource" :even="true" height="500px" size="lg">
<lay-table :columns="columns" :dataSource="dataSource" :even="true" height="500px" size="lg">
<template v-slot:id="{ data }"> <template v-slot:id="{ data }">
{{ data.id }} {{ data.id }}
</template> </template>
@ -47,6 +46,9 @@
<span style="color: #00A394;cursor: pointer" v-if="data.if == 1" @click="insZp(data)">开始自评</span> <span style="color: #00A394;cursor: pointer" v-if="data.if == 1" @click="insZp(data)">开始自评</span>
</template> </template>
</lay-table> </lay-table>
</lay-tab-item>
</lay-tab>
</lay-card> </lay-card>
</lay-col> </lay-col>
</lay-row> </lay-row>

View File

@ -87,7 +87,7 @@
<lay-form :model="model11" ref="layFormRef11" mode="inline"> <lay-form :model="model11" ref="layFormRef11" mode="inline">
<lay-form-item label="证件照" prop="username"> <lay-form-item label="证件照" prop="username">
<lay-upload style="width:180px;" ref="uploadRefA" :number="1" field="file" :size="1000" <lay-upload style="width:180px;" ref="uploadRefA" :number="1" field="file" :size="1000"
:headers="{ token: userStore.token }" url="http://yfyd.hschool.com.cn/api/common/upload" :headers="{ token: userStore.token }" :url="baseURL+'/api/common/upload'"
@cutdone="getCutDone2" v-model="file2" :auto="true" acceptMime="images" :cut="false" @cutdone="getCutDone2" v-model="file2" :auto="true" acceptMime="images" :cut="false"
:cutOptions="cutOptions" @done="getFileDone2"> :cutOptions="cutOptions" @done="getFileDone2">
<template #preview> <template #preview>
@ -135,7 +135,7 @@
</lay-form-item> </lay-form-item>
<lay-form-item label="资格证图片" prop="username"> <lay-form-item label="资格证图片" prop="username">
<lay-upload style="width:180px;" ref="uploadRef" :number="1" field="file" :size="1000" <lay-upload style="width:180px;" ref="uploadRef" :number="1" field="file" :size="1000"
:headers="{ token: userStore.token }" url="http://yfyd.hschool.com.cn/api/common/upload" :headers="{ token: userStore.token }" :url="baseURL+'/api/common/upload'"
@cutdone="getCutDone" v-model="file1" :auto="true" acceptMime="images" :cut="false" @cutdone="getCutDone" v-model="file1" :auto="true" acceptMime="images" :cut="false"
:cutOptions="cutOptions" @done="getFileDone"> :cutOptions="cutOptions" @done="getFileDone">
<template #preview> <template #preview>
@ -193,6 +193,7 @@ import {
userGroupData userGroupData
} from "@/api/module/home"; } from "@/api/module/home";
import { useUserStore } from "@/store/user"; import { useUserStore } from "@/store/user";
import { baseURL } from "@/api/http";
const cutUrl = ref(""); const cutUrl = ref("");
const uploadRef = ref(null) const uploadRef = ref(null)

View File

@ -7,7 +7,7 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度:" label-width="50"> <lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" v-model="searchAccount" placeholder="请选择" <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount" placeholder="请选择"
allow-clear></lay-date-picker> allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
@ -94,11 +94,16 @@ onMounted(() => {
getMonthlyEvaluation(); getMonthlyEvaluation();
//getMonthlyContent(); //getMonthlyContent();
}) })
const toSearch = () => {
getMonthlyEvaluation();
}
const getMonthlyEvaluation = () => { const getMonthlyEvaluation = () => {
monthlyEvaluation({ 'type': 3 }).then((res) => { monthlyEvaluation({ 'type': 3, 'time': searchAccount.value }).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
dataSource.value = res.data; dataSource.value = res.data;
} else {
dataSource.value = [];
} }
}) })
} }
@ -106,6 +111,7 @@ const searchAccount = ref(dayjs().year())
function toReset() { function toReset() {
searchAccount.value = dayjs().year() searchAccount.value = dayjs().year()
getMonthlyEvaluation();
} }
const columns = [ const columns = [
{ {

View File

@ -23,14 +23,14 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度" label-width="80px"> <lay-form-item label="年度" label-width="80px">
<lay-date-picker type="year" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="80px"> <lay-form-item label="考评对象" label-width="80px">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" <lay-select-option v-for="item in dataSerSource" :value="item.id"
:label="item.nickname"></lay-select-option> :label="item.nickname + '(' + item.code + ')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -23,14 +23,14 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度" label-width="80px"> <lay-form-item label="年度" label-width="80px">
<lay-date-picker type="year" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="80px"> <lay-form-item label="考评对象" label-width="80px">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" <lay-select-option v-for="item in dataSerSource" :value="item.id"
:label="item.nickname"></lay-select-option> :label="item.nickname + '(' + item.code + ')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -23,14 +23,14 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度" label-width="80px"> <lay-form-item label="年度" label-width="80px">
<lay-date-picker type="year" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="80px"> <lay-form-item label="考评对象" label-width="80px">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" <lay-select-option v-for="item in dataSerSource" :value="item.id"
:label="item.nickname"></lay-select-option> :label="item.nickname + '(' + item.code + ')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -7,7 +7,7 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度:" label-width="50"> <lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" v-model="searchAccount" placeholder="请选择" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount" placeholder="请选择" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="4"> <lay-col :md="4">
@ -24,7 +24,7 @@
<lay-card> <lay-card>
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">年度自评列表</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">年度自评列表</span>
<lay-button type="primary" size="sm">导出Excel</lay-button> <lay-button @click="exportExcel" type="primary" size="sm">导出考评表</lay-button>
</div> </div>
<lay-tab v-model="current1" @change="openTab"> <lay-tab v-model="current1" @change="openTab">
<lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id"> <lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id">
@ -83,6 +83,7 @@ import {
} from '../../api/module/home' } from '../../api/module/home'
import { useUserStore } from "@/store/user"; import { useUserStore } from "@/store/user";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { baseURL } from '@/api/http'
const current1 = ref(1); const current1 = ref(1);
const tabList = ref([]); const tabList = ref([]);
const userStore = useUserStore() const userStore = useUserStore()
@ -94,6 +95,11 @@ const addIsInfo = ref(1);
const yearName = ref(''); const yearName = ref('');
const exportExcel = () => {
var id=userStore.userInfo.id;
window.open(`${baseURL}/api/backend/pdf/personalProfile?id=${id}&time=${searchAccount.value}`)
}
onMounted(() => { onMounted(() => {
//getYearList(); //getYearList();
//getYearContent(); //getYearContent();

View File

@ -32,7 +32,7 @@
</lay-col> </lay-col>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="时间" label-width="80"> <lay-form-item label="时间" label-width="80">
<lay-date-picker type="year" v-model="yearmonth" placeholder="年" <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年"
allow-clear></lay-date-picker> allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -23,14 +23,14 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度" label-width="80px"> <lay-form-item label="年度" label-width="80px">
<lay-date-picker type="year" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="80px"> <lay-form-item label="考评对象" label-width="80px">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" <lay-select-option v-for="item in dataSerSource" :value="item.id"
:label="item.nickname"></lay-select-option> :label="item.nickname + '(' + item.code + ')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -23,14 +23,14 @@
<lay-row> <lay-row>
<lay-col :md="5"> <lay-col :md="5">
<lay-form-item label="年度" label-width="80px"> <lay-form-item label="年度" label-width="80px">
<lay-date-picker type="year" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker> <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年度" allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
<lay-col :md="6"> <lay-col :md="6">
<lay-form-item label="考评对象" label-width="80px"> <lay-form-item label="考评对象" label-width="80px">
<lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true"> <lay-select v-model="userId" :show-search="true" placeholder="请选择" :allowClear="true">
<lay-select-option v-for="item in dataSerSource" :value="item.id" <lay-select-option v-for="item in dataSerSource" :value="item.id"
:label="item.nickname"></lay-select-option> :label="item.nickname + '(' + item.code + ')'"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>

View File

@ -1,62 +1,69 @@
<template> <template>
<lay-container style="padding: 20px"> <lay-container style="padding: 20px">
<lay-card> <lay-row :space="10">
<lay-col :md="24">
<lay-card>
<lay-form style="margin-top: 20px">
<lay-row>
<lay-col :md="5">
<lay-form-item label="年度:" label-width="50">
<lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="searchAccount" placeholder="请选择"
allow-clear></lay-date-picker>
</lay-form-item>
</lay-col>
<lay-col :md="4">
<lay-form-item label-width="0">
<lay-button type="primary" @click="toSearch">查询</lay-button>
<lay-button @click="toReset">重置</lay-button>
</lay-form-item>
</lay-col>
</lay-row>
</lay-form>
</lay-card>
</lay-col>
<lay-col :md="24">
<lay-card>
<div style="padding: 10px"> <div style="padding: 10px">
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">年度考评自动公示</span> <span style="font-size: 18px;vertical-align: center;margin-right: 20px">年度考评自动公示</span>
</div> </div>
<lay-table :page="page" height="600px" size="lg" @change="changePage" :columns="columns" <lay-table :page="page" height="600px" size="lg" @change="changePage" :columns="columns"
:data-source="dataSource"> :data-source="dataSource">
<!-- <template v-slot:content="{ data }"> <!-- <template v-slot:content="{ data }">
<div v-html="data.content"></div> <div v-html="data.content"></div>
</template> --> </template> -->
<template v-slot:status="{ data }"> <template v-slot:status="{ data }">
<span v-if="data.status == 1">已发布</span> <span v-if="data.status == 1">已发布</span>
<span v-if="data.status == 0">已隐藏</span> <span v-if="data.status == 0">已隐藏</span>
</template> </template>
<template v-slot:operator="{ data }"> <template v-slot:operator="{ data }">
<lay-space size="lg"> <lay-space size="lg">
<span style="color: #00A394;cursor: pointer" @click="viewDetail(data)">下载公示</span> <span style="color: #00A394;cursor: pointer" @click="viewDetail(data)">下载公示</span>
</lay-space> </lay-space>
</template> </template>
</lay-table> </lay-table>
</lay-card> </lay-card>
<lay-layer v-model="detailShow" title="党风廉政教育详情" :type="4" :shade="true" :area="['650px', '100%']" </lay-col>
:btn="detailButton"> </lay-row>
<lay-container fluid="true" style="padding: 20px">
<h2 style="text-align: center; margin-bottom: 20px;">{{ detailData.party_style_name }}</h2>
<div class="detail-content" v-html="detailData.party_style_countent"></div>
</lay-container>
</lay-layer>
</lay-container> </lay-container>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { import {
educationList, educationList,
userYearData,
automaticPublicity
} from '../../api/module/home' } from '../../api/module/home'
import { ref, onMounted, reactive, watch, toRaw } from 'vue' import { ref, onMounted, reactive, watch, toRaw } from 'vue'
import { layer } from '@layui/layer-vue' import { layer } from '@layui/layer-vue'
import { useUserStore } from '@/store/user' import { useUserStore } from '@/store/user'
const userStore = useUserStore() const userStore = useUserStore()
import dayjs from "dayjs";
// const searchAccount = ref()
const changePage = (ppc: { current: number; limit: number }) => {
page.current = ppc.current;
page.limit = ppc.limit;
getNoticeList();
}
// //
const dataSource = ref([]); const dataSource = ref([]);
//
interface EducationData {
id: number;
party_style_name: string;
party_style_countent: string;
status?: number; //
}
// //
const page = reactive({ const page = reactive({
current: 1, current: 1,
@ -67,84 +74,54 @@ const page = reactive({
onMounted(() => { onMounted(() => {
getNoticeList() getNoticeList()
// Wait for editor to be mounted and initialized
// nextTick(() => {
// // Add null check before accessing editor
// if (editorRef.value && editorRef.value.getQuill()) {
// // Initialize title tooltips
// initTitle()
// // Add paste event listener
// const editor = editorRef.value.getQuill()
// editor.root.addEventListener('paste', customPaste, false)
// }
// })
}); });
const getNoticeList = () => { const getNoticeList = () => {
educationList({ page: page.current, size: page.limit }).then((res: any) => { automaticPublicity({}).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
dataSource.value = res.data.data; dataSource.value = res.data;
page.total = res.data.count; } else {
} else { layer.msg(res.msg, { icon: 2 })
layer.msg(res.msg, { icon: 2 }) }
}
}) })
} }
const columns = [ const columns = [
{ {
title: "年度", title: "年度",
width: "180px", width: "180px",
key: "party_style_name", key: "niandu",
align: 'center' align: 'center'
}, },
{ {
title: "考评人数", title: "考评项目",
width: "180px", width: "180px",
key: "createtime", key: "title",
align: 'center' align: 'center'
}, },
{ {
title: "考评人数", title: "考评人数",
width: "180px", width: "180px",
key: "createtime", key: "kaopingrenshu",
align: 'center' align: 'center'
}, },
{ {
title: '操作', title: "已考评人数",
width: '120px', width: "180px",
customSlot: 'operator', key: "yikaopingrenshu",
key: 'operator', align: 'center'
align: 'center', },
fixed: 'right' {
title: '操作',
width: '120px',
customSlot: 'operator',
key: 'operator',
align: 'center',
fixed: 'right'
} }
] ]
//
const detailShow = ref(false);
const detailData = reactive<EducationData>({
id: 0,
party_style_name: '',
party_style_countent: ''
});
const viewDetail = (data: EducationData) => {
detailShow.value = true;
detailData.id = data.id;
detailData.party_style_name = data.party_style_name;
detailData.party_style_countent = data.party_style_countent;
}
const detailButton = ref([
{
text: "关闭",
callback: () => {
detailShow.value = false;
}
}
])
</script> </script>
<style scoped> <style scoped>
:deep(.w-e-text-container) { :deep(.w-e-text-container) {