3.11
This commit is contained in:
parent
a0070aa65d
commit
fce1e1b5f4
6
components.d.ts
vendored
6
components.d.ts
vendored
@ -7,7 +7,6 @@ export {}
|
|||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
LayBadge: typeof import('@layui/layui-vue')['LayBadge']
|
|
||||||
LayBody: typeof import('@layui/layui-vue')['LayBody']
|
LayBody: typeof import('@layui/layui-vue')['LayBody']
|
||||||
LayBreadcrumb: typeof import('@layui/layui-vue')['LayBreadcrumb']
|
LayBreadcrumb: typeof import('@layui/layui-vue')['LayBreadcrumb']
|
||||||
LayBreadcrumbItem: typeof import('@layui/layui-vue')['LayBreadcrumbItem']
|
LayBreadcrumbItem: typeof import('@layui/layui-vue')['LayBreadcrumbItem']
|
||||||
@ -18,8 +17,6 @@ declare module 'vue' {
|
|||||||
LayCol: typeof import('@layui/layui-vue')['LayCol']
|
LayCol: typeof import('@layui/layui-vue')['LayCol']
|
||||||
LayConfigProvider: typeof import('@layui/layui-vue')['LayConfigProvider']
|
LayConfigProvider: typeof import('@layui/layui-vue')['LayConfigProvider']
|
||||||
LayContainer: typeof import('@layui/layui-vue')['LayContainer']
|
LayContainer: typeof import('@layui/layui-vue')['LayContainer']
|
||||||
LayCountUp: typeof import('@layui/layui-vue')['LayCountUp']
|
|
||||||
LayDate: typeof import('@layui/layui-vue')['LayDate']
|
|
||||||
LayDatePicker: typeof import('@layui/layui-vue')['LayDatePicker']
|
LayDatePicker: typeof import('@layui/layui-vue')['LayDatePicker']
|
||||||
LayDescriptions: typeof import('@layui/layui-vue')['LayDescriptions']
|
LayDescriptions: typeof import('@layui/layui-vue')['LayDescriptions']
|
||||||
LayDescriptionsItem: typeof import('@layui/layui-vue')['LayDescriptionsItem']
|
LayDescriptionsItem: typeof import('@layui/layui-vue')['LayDescriptionsItem']
|
||||||
@ -41,9 +38,7 @@ declare module 'vue' {
|
|||||||
LayLogo: typeof import('@layui/layui-vue')['LayLogo']
|
LayLogo: typeof import('@layui/layui-vue')['LayLogo']
|
||||||
LayMenu: typeof import('@layui/layui-vue')['LayMenu']
|
LayMenu: typeof import('@layui/layui-vue')['LayMenu']
|
||||||
LayMenuItem: typeof import('@layui/layui-vue')['LayMenuItem']
|
LayMenuItem: typeof import('@layui/layui-vue')['LayMenuItem']
|
||||||
LayPage: typeof import('@layui/layui-vue')['LayPage']
|
|
||||||
LayPopconfirm: typeof import('@layui/layui-vue')['LayPopconfirm']
|
LayPopconfirm: typeof import('@layui/layui-vue')['LayPopconfirm']
|
||||||
LayProgress: typeof import('@layui/layui-vue')['LayProgress']
|
|
||||||
LayRadio: typeof import('@layui/layui-vue')['LayRadio']
|
LayRadio: typeof import('@layui/layui-vue')['LayRadio']
|
||||||
LayRadioGroup: typeof import('@layui/layui-vue')['LayRadioGroup']
|
LayRadioGroup: typeof import('@layui/layui-vue')['LayRadioGroup']
|
||||||
LayRow: typeof import('@layui/layui-vue')['LayRow']
|
LayRow: typeof import('@layui/layui-vue')['LayRow']
|
||||||
@ -64,6 +59,5 @@ declare module 'vue' {
|
|||||||
LayUpload: typeof import('@layui/layui-vue')['LayUpload']
|
LayUpload: typeof import('@layui/layui-vue')['LayUpload']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
RouterView: typeof import('vue-router')['RouterView']
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
WangEditor: typeof import('./src/components/WangEditor/index.vue')['default']
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,8 @@ type TAxiosOption = {
|
|||||||
headers: object;
|
headers: object;
|
||||||
}
|
}
|
||||||
//记得修改上传路径/api/common/upload
|
//记得修改上传路径/api/common/upload
|
||||||
//const baseURL = 'http://yfyd.hschool.com.cn' // 设置基础URL前缀
|
const baseURL = 'http://yfyd.hschool.com.cn' // 设置基础URL前缀
|
||||||
const baseURL="/api";
|
//const baseURL="http://127.0.0.1";
|
||||||
|
|
||||||
// 导出baseURL,使其可以在其他页面使用
|
// 导出baseURL,使其可以在其他页面使用
|
||||||
export { baseURL };
|
export { baseURL };
|
||||||
|
@ -347,6 +347,26 @@ export function uploadImage(data: any) {
|
|||||||
return Http.post('/api/common/upload', data)
|
return Http.post('/api/common/upload', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 日志列表
|
||||||
|
export function logList(data: any) {
|
||||||
|
return Http.post('/api/backend/Logrecording/index', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询某一个用户所有的月度考评
|
||||||
|
export function getMonthlyFindData(data: any) {
|
||||||
|
return Http.post('/api/backend/Monthly/getMonthlyFindData', data)
|
||||||
|
}
|
||||||
|
// 查询某一个用户所有的季度考评
|
||||||
|
export function getQuarterlyFindData(data: any) {
|
||||||
|
return Http.post('/api/backend/Quarter/getQuarterlyFindData', data)
|
||||||
|
}
|
||||||
|
// 查询某一个用户所有的年度考评
|
||||||
|
export function getAnnualFindData(data: any) {
|
||||||
|
return Http.post('/api/backend/Year/getAnnualFindData', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<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 size="lg" ref="tableRef" :columns="columns" :data-source="dataSource">
|
<lay-table height="600px" @change="changePage" :page="page" size="lg" ref="tableRef" :columns="columns" :data-source="dataSource">
|
||||||
<template v-slot:event_type="{ data }">
|
<template v-slot:event_type="{ data }">
|
||||||
<span :style="{ color: data.event_type === '登录' ? '#67C23A' : '#409EFF' }">
|
<span :style="{ color: data.event_type === '登录' ? '#67C23A' : '#409EFF' }">
|
||||||
{{ data.event_type }}
|
{{ data.event_type }}
|
||||||
@ -16,22 +16,44 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted, reactive } from 'vue'
|
||||||
import { layer } from '@layui/layer-vue'
|
import { layer } from '@layui/layer-vue'
|
||||||
|
import { logList } from '@/api/module/home';
|
||||||
|
const page = reactive({
|
||||||
|
current: 1,
|
||||||
|
limit: 10,
|
||||||
|
total: 1
|
||||||
|
});
|
||||||
// 定义接口类型
|
// 定义接口类型
|
||||||
interface LoginLog {
|
interface LoginLog {
|
||||||
id: number
|
id: number
|
||||||
department: string // 科室
|
user_id: number
|
||||||
record_time: string // 记录时间
|
ip_code: string // 登录IP
|
||||||
login_name: string // 登录名
|
createtime: string // 记录时间
|
||||||
username: string // 用户名
|
content: string // 事件内容
|
||||||
ip_address: string // 登录IP
|
nickname: string // 用户姓名
|
||||||
event_type: string // 事件类型(登录/登出)
|
work_number: string // 工号
|
||||||
event_content: string // 事件内容
|
name: string // 科室
|
||||||
device_info: string // 设备信息
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
getLogList();
|
||||||
|
});
|
||||||
|
// 分页变化
|
||||||
|
const changePage = (ppc) => {
|
||||||
|
page.current = ppc.current;
|
||||||
|
page.limit = ppc.limit;
|
||||||
|
getLogList();
|
||||||
|
}
|
||||||
|
const getLogList = () => {
|
||||||
|
logList({ page: page.current, size: page.limit }).then((res) => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
dataSource.value = res.data.data;
|
||||||
|
page.total = res.data.count;
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 列表数据
|
// 列表数据
|
||||||
const dataSource = ref<LoginLog[]>([])
|
const dataSource = ref<LoginLog[]>([])
|
||||||
|
|
||||||
@ -40,44 +62,33 @@ const columns = [
|
|||||||
{
|
{
|
||||||
title: "科室",
|
title: "科室",
|
||||||
width: "120px",
|
width: "120px",
|
||||||
key: "department"
|
key: "name"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "记录时间",
|
title: "工号",
|
||||||
width: "180px",
|
|
||||||
key: "record_time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "登录名",
|
|
||||||
width: "120px",
|
width: "120px",
|
||||||
key: "login_name"
|
key: "work_number"
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "用户名",
|
|
||||||
width: "120px",
|
|
||||||
key: "username"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "登录IP",
|
title: "登录IP",
|
||||||
width: "150px",
|
width: "150px",
|
||||||
key: "ip_address"
|
key: "ip_code"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "事件类型",
|
title: "用户姓名",
|
||||||
width: "100px",
|
width: "120px",
|
||||||
key: "event_type",
|
key: "nickname"
|
||||||
customSlot: 'event_type'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "事件内容",
|
title: "事件内容",
|
||||||
width: "200px",
|
width: "200px",
|
||||||
key: "event_content"
|
key: "content"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "设备信息",
|
title: "记录时间",
|
||||||
width: "250px",
|
width: "180px",
|
||||||
key: "device_info"
|
key: "createtime"
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@ -99,14 +110,13 @@ const getLoginLogs = () => {
|
|||||||
dataSource.value = [
|
dataSource.value = [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
department: '内科',
|
user_id: 10,
|
||||||
record_time: '2024-03-20 10:30:45',
|
ip_code: '192.168.1.100',
|
||||||
login_name: 'admin',
|
createtime: '2024-03-20 10:30:45',
|
||||||
username: '管理员',
|
content: '用户登录成功',
|
||||||
ip_address: '192.168.1.100',
|
nickname: '张三',
|
||||||
event_type: '登录',
|
work_number: '111111',
|
||||||
event_content: '用户登录成功',
|
name: '大腿骨折2'
|
||||||
device_info: 'Chrome 122.0.0.0 / Windows 10'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
height="600px"
|
height="600px"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="dataSource"
|
:data-source="dataSource"
|
||||||
@page-change="changePage"
|
@change="changePage"
|
||||||
>
|
>
|
||||||
<template v-slot:content="{ data }">
|
<template v-slot:content="{ data }">
|
||||||
<div v-html="data.content"></div>
|
<div v-html="data.content"></div>
|
||||||
@ -75,7 +75,6 @@ const columns = [
|
|||||||
title: "公告内容",
|
title: "公告内容",
|
||||||
width: "280px",
|
width: "280px",
|
||||||
key: "content",
|
key: "content",
|
||||||
customSlot: 'content',
|
|
||||||
ellipsisTooltip: true
|
ellipsisTooltip: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -113,8 +112,9 @@ const getNoticeList = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 分页变化
|
// 分页变化
|
||||||
const changePage = (currentPage: number) => {
|
const changePage = (ppc) => {
|
||||||
page.current = currentPage;
|
page.current = ppc.current;
|
||||||
|
page.limit = ppc.limit;
|
||||||
getNoticeList();
|
getNoticeList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
<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="月度"
|
<lay-date-picker type="yearmonth" v-model="yearmonth" placeholder="月度" allow-clear></lay-date-picker>
|
||||||
allow-clear></lay-date-picker>
|
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
</lay-col>
|
</lay-col>
|
||||||
<!-- <lay-col :md="5">-->
|
<!-- <lay-col :md="5">-->
|
||||||
@ -55,18 +54,24 @@
|
|||||||
</lay-card>
|
</lay-card>
|
||||||
<lay-tab v-model="tab_id" type="brief" @change="openTab">
|
<lay-tab v-model="tab_id" type="brief" @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">
|
||||||
<lay-table :page="page" height="600px" :columns="columns" :loading="loading"
|
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
||||||
:data-source="dataSource" v-model:selected-keys="selectedKeys" @change="change">
|
v-model:selected-keys="selectedKeys" @change="change">
|
||||||
<template v-slot:scoringrecord_status="{ row }">
|
<template v-slot:scoringrecord_status="{ row }">
|
||||||
<lay-tag v-if="row.scoringrecord_status == 1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 1" type="primary">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-slot:nickname="{ row }">
|
||||||
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==1"
|
<span style="color: #00A394;cursor: pointer"
|
||||||
|
v-if="row.department_score_scoringrecord == 0 && row.scoringrecord_status == 1"
|
||||||
@click="getInfo(row, 1)">科室评分</span>
|
@click="getInfo(row, 1)">科室评分</span>
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord!=0 && row.scoringrecord_status==1"
|
<span style="color: #00A394;cursor: pointer"
|
||||||
|
v-if="row.department_score_scoringrecord != 0 && row.scoringrecord_status == 1"
|
||||||
@click="getInfo(row, 2)">考评详情</span>
|
@click="getInfo(row, 2)">考评详情</span>
|
||||||
<span style="color: #999999;cursor: not-allowed" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==2">考评详情</span>
|
<span style="color: #999999;cursor: not-allowed"
|
||||||
|
v-if="row.department_score_scoringrecord == 0 && row.scoringrecord_status == 2">未自评</span>
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-tab-item>
|
</lay-tab-item>
|
||||||
@ -83,19 +88,59 @@
|
|||||||
<lay-input-number v-if="data.pid == 0" :disabled="true" :min="0" :max="data.base_score"
|
<lay-input-number v-if="data.pid == 0" :disabled="true" :min="0" :max="data.base_score"
|
||||||
v-model="data.base_score" position="right"></lay-input-number>
|
v-model="data.base_score" position="right"></lay-input-number>
|
||||||
<lay-input-number v-if="data.pid != 0" :disabled="addIsInfo == 2" :min="0" :max="data.base_score"
|
<lay-input-number v-if="data.pid != 0" :disabled="addIsInfo == 2" :min="0" :max="data.base_score"
|
||||||
v-model="data.content_score"
|
v-model="data.content_score" position="right"></lay-input-number>
|
||||||
position="right"></lay-input-number>
|
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:ksinput="{ data, rowIndex }">
|
<template v-slot:ksinput="{ data, rowIndex }">
|
||||||
<lay-input-number v-if="data.pid == 0" :disabled="true" :min="0" :max="data.base_score"
|
<lay-input-number v-if="data.pid == 0" :disabled="true" :min="0" :max="data.base_score"
|
||||||
v-model="data.base_score" position="right"></lay-input-number>
|
v-model="data.base_score" position="right"></lay-input-number>
|
||||||
<lay-input-number v-if="data.pid != 0" :disabled="addIsInfo == 2" :min="0" :max="data.base_score"
|
<lay-input-number v-if="data.pid != 0" :disabled="addIsInfo == 2" :min="0" :max="data.base_score"
|
||||||
v-model="data.department_score"
|
v-model="data.department_score" position="right"></lay-input-number>
|
||||||
position="right"></lay-input-number>
|
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</lay-layer>
|
</lay-layer>
|
||||||
|
<lay-layer v-model="userShow" title="月度自评列表" :shade="true" :area="['90%', '90%']">
|
||||||
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
|
<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" v-model="searchAccountUser" 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="toUserSearch">查询</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-tab v-model="userTabId" type="brief" @change="openUserTab">
|
||||||
|
<lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id">
|
||||||
|
<lay-table :default-expand-all="true" :columns="userColumns"
|
||||||
|
:data-source="userDataSource">
|
||||||
|
<template v-slot:operator="{ row }">
|
||||||
|
<span v-if="row.if ==2" style="color: #00A394;cursor: pointer"
|
||||||
|
@click="getMonthlyInfo(row)">考评详情</span>
|
||||||
|
<span style="color: #999999;cursor: not-allowed"
|
||||||
|
v-if="row.if ==1">未自评</span>
|
||||||
|
</template>
|
||||||
|
</lay-table>
|
||||||
|
</lay-tab-item>
|
||||||
|
</lay-tab>
|
||||||
|
|
||||||
|
</lay-col>
|
||||||
|
</lay-row>
|
||||||
|
</lay-container>
|
||||||
|
</lay-layer>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -106,13 +151,63 @@ import {
|
|||||||
getGroupEvaluation,
|
getGroupEvaluation,
|
||||||
getMonthlyUserList,
|
getMonthlyUserList,
|
||||||
MonthlyCreate,
|
MonthlyCreate,
|
||||||
getMonthlyListFind, getMonthlyListUpdate
|
getMonthlyListFind, getMonthlyListUpdate, getMonthlyFindData,
|
||||||
|
MonthlyInfo
|
||||||
} from "@/api/module/home";
|
} from "@/api/module/home";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getLeftList();
|
getLeftList();
|
||||||
})
|
})
|
||||||
|
const userShow = ref(false);
|
||||||
|
const userColumns = ref([
|
||||||
|
{ title: '月度', width: '80px', key: 'month', align: 'center' },
|
||||||
|
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
||||||
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center' },
|
||||||
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
||||||
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
||||||
|
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
||||||
|
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
||||||
|
])
|
||||||
|
const userDataSource = ref([]);
|
||||||
|
const userTabId = ref(0);
|
||||||
|
const userInfo = ref({});
|
||||||
|
const searchAccountUser = ref(dayjs().year());
|
||||||
|
const openUserListShow = (row) => {
|
||||||
|
userInfo.value = row;
|
||||||
|
userShow.value = true;
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
|
const getUserListInfo = () => {
|
||||||
|
getMonthlyFindData({
|
||||||
|
'user_id': userInfo.value.id,
|
||||||
|
'evaluation_id': userTabId.value,
|
||||||
|
'time': searchAccountUser.value
|
||||||
|
}).then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
if(res.code==1){
|
||||||
|
userDataSource.value = res.data;
|
||||||
|
}else{
|
||||||
|
userDataSource.value = [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const openUserTab = (d) => {
|
||||||
|
console.log(d)
|
||||||
|
userTabId.value = d;
|
||||||
|
userDataSource.value = [];
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
|
const getMonthlyInfo = (item) => {
|
||||||
|
addIsInfo.value=2;
|
||||||
|
infoShow.value = true;
|
||||||
|
console.log(item);
|
||||||
|
item.time=item.month;
|
||||||
|
getInfoMode(item);
|
||||||
|
}
|
||||||
|
const toUserSearch = () => {
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
const openTab = (d) => {
|
const openTab = (d) => {
|
||||||
console.log(d)
|
console.log(d)
|
||||||
tab_id.value = d;
|
tab_id.value = d;
|
||||||
@ -177,6 +272,7 @@ const getTabList = () => {
|
|||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
tabList.value = res.data;
|
tabList.value = res.data;
|
||||||
tab_id.value = res.data[0].id;
|
tab_id.value = res.data[0].id;
|
||||||
|
userTabId.value = res.data[0].id;
|
||||||
getList();
|
getList();
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, { icon: 2 })
|
layer.msg(res.msg, { icon: 2 })
|
||||||
@ -230,10 +326,10 @@ const columns = ref([
|
|||||||
{ title: '选项', width: '55px', type: 'checkbox', align: 'center' },
|
{ title: '选项', width: '55px', type: 'checkbox', align: 'center' },
|
||||||
{ title: '序号', width: '60px', key: 'id', align: 'center' },
|
{ title: '序号', width: '60px', key: 'id', align: 'center' },
|
||||||
{ title: '月度', width: '80px', key: 'time', align: 'center' },
|
{ title: '月度', width: '80px', key: 'time', align: 'center' },
|
||||||
{title: '考评对象', width: '100px', key: 'nickname', align: 'center'},
|
{ title: '考评对象', width: '100px', key: 'nickname', customSlot: 'nickname', align: 'center' },
|
||||||
{ title: '工号', width: '100px', key: 'work_number', align: 'center' },
|
{ title: '工号', width: '100px', key: 'work_number', align: 'center' },
|
||||||
{ title: '部门', width: '120px', key: 'group_name', align: 'center' },
|
{ title: '部门', width: '120px', key: 'group_name', align: 'center' },
|
||||||
{title: '季度总加分', width: '100px', key: 'zongjiafen', align: 'center'},
|
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
||||||
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center' },
|
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center' },
|
||||||
{ title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
{ title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
||||||
@ -361,5 +457,4 @@ const dataSource6 = ref([])
|
|||||||
background-color: #e8f1ff;
|
background-color: #e8f1ff;
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -209,16 +209,6 @@ const columns = [
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'createtime'
|
key: 'createtime'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: '加分',
|
|
||||||
key: 'remark',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '扣分',
|
|
||||||
key: 'remark',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: '自评总分',
|
title: '自评总分',
|
||||||
key: 'self_score',
|
key: 'self_score',
|
||||||
@ -229,6 +219,11 @@ const columns = [
|
|||||||
customSlot: 'department_score',
|
customSlot: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '医院评分',
|
||||||
|
key: 'hospital_score',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
width: '180px',
|
width: '180px',
|
||||||
|
@ -55,12 +55,15 @@
|
|||||||
<lay-tag v-if="row.scoringrecord_status==1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status==1" type="primary">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status==2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status==2">未自评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-slot:nickname="{ row }">
|
||||||
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==1"
|
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==1"
|
||||||
@click="getInfo(row,1)">科室评分</span>
|
@click="getInfo(row,1)">科室评分</span>
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord!=0 && row.scoringrecord_status==1"
|
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord!=0 && row.scoringrecord_status==1"
|
||||||
@click="getInfo(row,2)">考评详情</span>
|
@click="getInfo(row,2)">考评详情</span>
|
||||||
<span style="color: #999999;cursor: not-allowed" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==2">考评详情</span>
|
<span style="color: #999999;cursor: not-allowed" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==2">未自评</span>
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-tab-item>
|
</lay-tab-item>
|
||||||
@ -90,6 +93,48 @@
|
|||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</lay-layer>
|
</lay-layer>
|
||||||
|
<lay-layer v-model="userShow" title="季度自评列表" :shade="true" :area="['90%', '90%']">
|
||||||
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
|
<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" v-model="searchAccountUser" 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="toUserSearch">查询</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-tab v-model="userTabId" type="brief" @change="openUserTab">
|
||||||
|
<lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id">
|
||||||
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns"
|
||||||
|
:data-source="userDataSource">
|
||||||
|
<template v-slot:operator="{ row }">
|
||||||
|
<span v-if="row.if ==2" style="color: #00A394;cursor: pointer"
|
||||||
|
@click="getMonthlyInfo(row)">考评详情</span>
|
||||||
|
<span style="color: #999999;cursor: not-allowed"
|
||||||
|
v-if="row.if ==1">未自评</span>
|
||||||
|
</template>
|
||||||
|
</lay-table>
|
||||||
|
</lay-tab-item>
|
||||||
|
</lay-tab>
|
||||||
|
|
||||||
|
</lay-col>
|
||||||
|
</lay-row>
|
||||||
|
</lay-container>
|
||||||
|
</lay-layer>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -100,13 +145,63 @@ import {
|
|||||||
getGroupQuarter,
|
getGroupQuarter,
|
||||||
getQuarterUserList,
|
getQuarterUserList,
|
||||||
getQuarterListFind,
|
getQuarterListFind,
|
||||||
getQuarterListUpdate
|
getQuarterListUpdate,
|
||||||
|
getQuarterlyFindData
|
||||||
} from "@/api/module/home";
|
} from "@/api/module/home";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getLeftList();
|
getLeftList();
|
||||||
})
|
})
|
||||||
|
const userShow = ref(false);
|
||||||
|
const userColumns = ref([
|
||||||
|
{ title: '季度', width: '80px', key: 'quarter', align: 'center' },
|
||||||
|
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
||||||
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center' },
|
||||||
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
||||||
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
||||||
|
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
||||||
|
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
||||||
|
])
|
||||||
|
const userDataSource = ref([]);
|
||||||
|
const userTabId = ref(0);
|
||||||
|
const userInfo = ref({});
|
||||||
|
const searchAccountUser = ref(dayjs().year());
|
||||||
|
const openUserListShow = (row) => {
|
||||||
|
userInfo.value = row;
|
||||||
|
userShow.value = true;
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
|
const getUserListInfo = () => {
|
||||||
|
getQuarterlyFindData({
|
||||||
|
'user_id': userInfo.value.id,
|
||||||
|
'evaluation_id': userTabId.value,
|
||||||
|
'time': searchAccountUser.value
|
||||||
|
}).then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
if(res.code==1){
|
||||||
|
userDataSource.value = res.data;
|
||||||
|
}else{
|
||||||
|
userDataSource.value = [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const openUserTab = (d) => {
|
||||||
|
console.log(d)
|
||||||
|
userTabId.value = d;
|
||||||
|
userDataSource.value = [];
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
|
const getMonthlyInfo = (item) => {
|
||||||
|
addIsInfo.value=2;
|
||||||
|
infoShow.value = true;
|
||||||
|
console.log(item);
|
||||||
|
item.time=item.quarter;
|
||||||
|
getInfoMode(item);
|
||||||
|
}
|
||||||
|
const toUserSearch = () => {
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
const openTab = (d) => {
|
const openTab = (d) => {
|
||||||
console.log(d)
|
console.log(d)
|
||||||
tab_id.value = d;
|
tab_id.value = d;
|
||||||
@ -146,8 +241,9 @@ const getList = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const thisInfo = ref();
|
const thisInfo = ref();
|
||||||
const getInfo = (row) => {
|
const getInfo = (row,type) => {
|
||||||
infoShow.value = true;
|
infoShow.value = true;
|
||||||
|
addIsInfo.value = type;
|
||||||
console.log(row);
|
console.log(row);
|
||||||
thisInfo.value = row;
|
thisInfo.value = row;
|
||||||
getInfoMode(row);
|
getInfoMode(row);
|
||||||
@ -174,6 +270,7 @@ const getTabList = () => {
|
|||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
tabList.value = res.data;
|
tabList.value = res.data;
|
||||||
tab_id.value = res.data[0].id;
|
tab_id.value = res.data[0].id;
|
||||||
|
userTabId.value = res.data[0].id;
|
||||||
getList();
|
getList();
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, {icon: 2})
|
layer.msg(res.msg, {icon: 2})
|
||||||
@ -228,10 +325,10 @@ const columns = ref([
|
|||||||
{title: '选项', width: '55px', type: 'checkbox', align: 'center'},
|
{title: '选项', width: '55px', type: 'checkbox', align: 'center'},
|
||||||
{title: '序号', width: '60px', key: 'id', align: 'center'},
|
{title: '序号', width: '60px', key: 'id', align: 'center'},
|
||||||
{title: '季度', width: '80px', key: 'time', align: 'center'},
|
{title: '季度', width: '80px', key: 'time', align: 'center'},
|
||||||
{title: '考评对象', width: '100px', key: 'nickname', align: 'center'},
|
{title: '考评对象', width: '100px', key: 'nickname',customSlot:'nickname', align: 'center'},
|
||||||
{title: '工号', width: '100px', key: 'work_number', align: 'center'},
|
{title: '工号', width: '100px', key: 'work_number', align: 'center'},
|
||||||
{title: '部门', width: '120px', key: 'group_name', align: 'center'},
|
{title: '部门', width: '120px', key: 'group_name', align: 'center'},
|
||||||
{title: '季度总加分', width: '100px', key: 'zongjiafen', align: 'center'},
|
{title: '医院评分', width: '100px', key: 'hospital_score', align: 'center'},
|
||||||
{title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center'},
|
{title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center'},
|
||||||
{title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center'},
|
{title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center'},
|
||||||
{title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status',align: 'center'},
|
{title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status',align: 'center'},
|
||||||
|
@ -50,8 +50,8 @@
|
|||||||
{{ data.password }}
|
{{ data.password }}
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ data }">
|
<template v-slot:operator="{ data }">
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="data.if_period==1" @click="getMonthlyInfo(data)">详情</span>
|
<span style="color: #00A394;cursor: pointer" v-if="data.if==2" @click="getMonthlyInfo(data)">详情</span>
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="data.if_period==2"
|
<span style="color: #00A394;cursor: pointer" v-if="data.if==1"
|
||||||
@click="insZp(data)">开始自评</span>
|
@click="insZp(data)">开始自评</span>
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
</lay-col>
|
</lay-col>
|
||||||
</lay-row>
|
</lay-row>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
<lay-layer v-model="visible11" title="季度自评详情" :type="4" :shade="true" :area="['950px','100%']" :btn="addIsInfo==1?addButton:''">
|
<lay-layer v-model="visible11" title="季度自评" :type="4" :shade="true" :area="['950px','100%']" :btn="addIsInfo==1?addButton:''">
|
||||||
<lay-container fluid="true" style="padding: 20px">
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
<lay-card shadow="always">
|
<lay-card shadow="always">
|
||||||
<div style="height: 70px;width: 100%;">
|
<div style="height: 70px;width: 100%;">
|
||||||
@ -217,16 +217,6 @@ const columns = [
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'createtime'
|
key: 'createtime'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: '加分',
|
|
||||||
key: 'remark',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '扣分',
|
|
||||||
key: 'remark',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: '自评总分',
|
title: '自评总分',
|
||||||
key: 'self_score',
|
key: 'self_score',
|
||||||
@ -236,6 +226,10 @@ const columns = [
|
|||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
customSlot: 'department_score',
|
customSlot: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
}, {
|
||||||
|
title: '医院评分',
|
||||||
|
key: 'hospital_score',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -57,8 +57,8 @@
|
|||||||
</lay-row>
|
</lay-row>
|
||||||
</lay-form>
|
</lay-form>
|
||||||
</lay-card>
|
</lay-card>
|
||||||
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :default-toolbar="true"
|
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :default-toolbar="false"
|
||||||
:data-source="dataSource">
|
:data-source="dataSource" @change="changePage">
|
||||||
<template #status="{ row }">
|
<template #status="{ row }">
|
||||||
<lay-tag type="danger" v-if="row.status == 0">已禁用</lay-tag>
|
<lay-tag type="danger" v-if="row.status == 0">已禁用</lay-tag>
|
||||||
<lay-tag type="primary" v-if="row.status == 1">正常</lay-tag>
|
<lay-tag type="primary" v-if="row.status == 1">正常</lay-tag>
|
||||||
@ -208,12 +208,18 @@ const getUserList = () => {
|
|||||||
userData({group_id: leftId.value, size: page.limit, page: page.current}).then((res) => {
|
userData({group_id: leftId.value, size: page.limit, page: page.current}).then((res) => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
dataSource.value = res.data;
|
dataSource.value = res.data.data;
|
||||||
|
page.total = res.data.count;
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, {icon: 2})
|
layer.msg(res.msg, {icon: 2})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const changePage = (ppc) => {
|
||||||
|
page.current = ppc.current;
|
||||||
|
page.limit = ppc.limit;
|
||||||
|
getUserList();
|
||||||
|
}
|
||||||
const partyList = ref([])
|
const partyList = ref([])
|
||||||
const getPartyList = () => {
|
const getPartyList = () => {
|
||||||
partyGroupData({}).then((res) => {
|
partyGroupData({}).then((res) => {
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
<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="600px" size="lg" :columns="columns" :data-source="dataSource">
|
<lay-table :page="page" height="600px" size="lg" @change="changePage" :columns="columns" :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>
|
||||||
@ -229,7 +229,12 @@ interface NoticeData {
|
|||||||
content: string;
|
content: string;
|
||||||
status: number;
|
status: number;
|
||||||
}
|
}
|
||||||
|
// 分页变化
|
||||||
|
const changePage = (ppc) => {
|
||||||
|
page.current = ppc.current;
|
||||||
|
page.limit = ppc.limit;
|
||||||
|
getNoticeList();
|
||||||
|
}
|
||||||
// 列表数据
|
// 列表数据
|
||||||
const dataSource = ref<NoticeData[]>([]);
|
const dataSource = ref<NoticeData[]>([]);
|
||||||
const addShow = ref(false);
|
const addShow = ref(false);
|
||||||
@ -317,11 +322,6 @@ const delShowMsd = async (data: NoticeData) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const changePage = (currentPage: number) => {
|
|
||||||
page.current = currentPage;
|
|
||||||
getNoticeList();
|
|
||||||
}
|
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
title: "公告标题",
|
title: "公告标题",
|
||||||
@ -337,7 +337,6 @@ const columns = [
|
|||||||
title: "公告内容",
|
title: "公告内容",
|
||||||
width: "280px",
|
width: "280px",
|
||||||
key: "content",
|
key: "content",
|
||||||
customSlot: 'content',
|
|
||||||
ellipsisTooltip: true
|
ellipsisTooltip: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -188,7 +188,9 @@ const action11 = ref([
|
|||||||
layer.msg('请选择菜单!', {icon: 2})
|
layer.msg('请选择菜单!', {icon: 2})
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(typeof addData.rules != 'string'){
|
||||||
addData.rules = addData.rules.join(',');
|
addData.rules = addData.rules.join(',');
|
||||||
|
}
|
||||||
if (addIsEdit.value == 1) {
|
if (addIsEdit.value == 1) {
|
||||||
var res = await authGroupDataAdd(addData);
|
var res = await authGroupDataAdd(addData);
|
||||||
} else {
|
} else {
|
||||||
|
@ -46,12 +46,17 @@
|
|||||||
<lay-tag v-if="row.scoringrecord_status==1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status==1" type="primary">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status==2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status==2">未自评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-slot:nickname="{ row }">
|
||||||
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
|
<span style="color: #00A394;cursor: pointer;padding-right: 10px;" v-if="row.department_score_scoringrecord!=0 && row.scoringrecord_status==1"
|
||||||
|
@click="getInfo(row,1)">医院评分</span>
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==1"
|
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==1"
|
||||||
@click="getInfo(row,1)">科室评分</span>
|
@click="getInfo(row,1)">科室评分</span>
|
||||||
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord!=0 && row.scoringrecord_status==1"
|
<span style="color: #00A394;cursor: pointer" v-if="row.department_score_scoringrecord!=0 && row.scoringrecord_status==1"
|
||||||
@click="getInfo(row,2)">考评详情</span>
|
@click="getInfo(row,2)">考评详情</span>
|
||||||
<span style="color: #999999;cursor: not-allowed" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==2">考评详情</span>
|
<span style="color: #999999;cursor: not-allowed" v-if="row.department_score_scoringrecord==0 && row.scoringrecord_status==2">未自评</span>
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-tab-item>
|
</lay-tab-item>
|
||||||
@ -81,6 +86,48 @@
|
|||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</lay-layer>
|
</lay-layer>
|
||||||
|
<lay-layer v-model="userShow" title="季度自评列表" :shade="true" :area="['90%', '90%']">
|
||||||
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
|
<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" v-model="searchAccountUser" 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="toUserSearch">查询</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-tab v-model="userTabId" type="brief" @change="openUserTab">
|
||||||
|
<lay-tab-item v-for="item in tabList" :title="item.title" :id="item.id">
|
||||||
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns"
|
||||||
|
:data-source="userDataSource">
|
||||||
|
<template v-slot:operator="{ row }">
|
||||||
|
<span v-if="row.if ==2" style="color: #00A394;cursor: pointer"
|
||||||
|
@click="getMonthlyInfo(row)">考评详情</span>
|
||||||
|
<span style="color: #999999;cursor: not-allowed"
|
||||||
|
v-if="row.if ==1">未自评</span>
|
||||||
|
</template>
|
||||||
|
</lay-table>
|
||||||
|
</lay-tab-item>
|
||||||
|
</lay-tab>
|
||||||
|
|
||||||
|
</lay-col>
|
||||||
|
</lay-row>
|
||||||
|
</lay-container>
|
||||||
|
</lay-layer>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -90,13 +137,64 @@ import {
|
|||||||
getUserGroupNew,
|
getUserGroupNew,
|
||||||
getGroupYear,
|
getGroupYear,
|
||||||
getYearUserList,
|
getYearUserList,
|
||||||
getYearListFind, getYearListUpdate
|
getYearListFind, getYearListUpdate,
|
||||||
|
getAnnualFindData
|
||||||
} from "@/api/module/home";
|
} from "@/api/module/home";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getLeftList();
|
getLeftList();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const userShow = ref(false);
|
||||||
|
const userColumns = ref([
|
||||||
|
{ title: '年度', width: '80px', key: 'year', align: 'center' },
|
||||||
|
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
||||||
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center' },
|
||||||
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
||||||
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
||||||
|
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
||||||
|
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
||||||
|
])
|
||||||
|
const userDataSource = ref([]);
|
||||||
|
const userTabId = ref(0);
|
||||||
|
const userInfo = ref({});
|
||||||
|
const searchAccountUser = ref(dayjs().year());
|
||||||
|
const openUserListShow = (row) => {
|
||||||
|
userInfo.value = row;
|
||||||
|
userShow.value = true;
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
|
const getUserListInfo = () => {
|
||||||
|
getAnnualFindData({
|
||||||
|
'user_id': userInfo.value.id,
|
||||||
|
'evaluation_id': userTabId.value,
|
||||||
|
'time': searchAccountUser.value
|
||||||
|
}).then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
if(res.code==1){
|
||||||
|
userDataSource.value = res.data;
|
||||||
|
}else{
|
||||||
|
userDataSource.value = [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const openUserTab = (d) => {
|
||||||
|
console.log(d)
|
||||||
|
userTabId.value = d;
|
||||||
|
userDataSource.value = [];
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
|
const getMonthlyInfo = (item) => {
|
||||||
|
addIsInfo.value=2;
|
||||||
|
infoShow.value = true;
|
||||||
|
console.log(item);
|
||||||
|
item.time=item.year;
|
||||||
|
getInfoMode(item);
|
||||||
|
}
|
||||||
|
const toUserSearch = () => {
|
||||||
|
getUserListInfo();
|
||||||
|
}
|
||||||
const openTab = (d) => {
|
const openTab = (d) => {
|
||||||
console.log(d)
|
console.log(d)
|
||||||
tab_id.value = d;
|
tab_id.value = d;
|
||||||
@ -161,6 +259,7 @@ const getTabList = () => {
|
|||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
tabList.value = res.data;
|
tabList.value = res.data;
|
||||||
tab_id.value = res.data[0].id;
|
tab_id.value = res.data[0].id;
|
||||||
|
userTabId.value = res.data[0].id;
|
||||||
getList();
|
getList();
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, {icon: 2})
|
layer.msg(res.msg, {icon: 2})
|
||||||
@ -214,10 +313,10 @@ const columns = ref([
|
|||||||
{title: '选项', width: '55px', type: 'checkbox', align: 'center'},
|
{title: '选项', width: '55px', type: 'checkbox', align: 'center'},
|
||||||
{title: '序号', width: '60px', key: 'id', align: 'center'},
|
{title: '序号', width: '60px', key: 'id', align: 'center'},
|
||||||
{title: '年度', width: '80px', key: 'time', align: 'center'},
|
{title: '年度', width: '80px', key: 'time', align: 'center'},
|
||||||
{title: '考评对象', width: '100px', key: 'nickname', align: 'center'},
|
{title: '考评对象', width: '100px', key: 'nickname', customSlot: 'nickname', align: 'center'},
|
||||||
{title: '工号', width: '100px', key: 'work_number', align: 'center'},
|
{title: '工号', width: '100px', key: 'work_number', align: 'center'},
|
||||||
{title: '部门', width: '120px', key: 'group_name', align: 'center'},
|
{title: '部门', width: '120px', key: 'group_name', align: 'center'},
|
||||||
{title: '年度总加分', width: '100px', key: 'zongjiafen', align: 'center'},
|
{title: '医院评分', width: '100px', key: 'hospital_score', align: 'center'},
|
||||||
{title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center'},
|
{title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center'},
|
||||||
{title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center'},
|
{title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center'},
|
||||||
{title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center'},
|
{title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center'},
|
||||||
|
@ -221,16 +221,6 @@ const columns = [
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'createtime'
|
key: 'createtime'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: '加分',
|
|
||||||
key: 'remark',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '扣分',
|
|
||||||
key: 'remark',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: '自评总分',
|
title: '自评总分',
|
||||||
key: 'self_score',
|
key: 'self_score',
|
||||||
@ -240,6 +230,10 @@ const columns = [
|
|||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
customSlot: 'department_score',
|
customSlot: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
}, {
|
||||||
|
title: '医院评分',
|
||||||
|
key: 'hospital_score',
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -20,7 +20,7 @@ export default defineConfig({
|
|||||||
server: {
|
server: {
|
||||||
proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://192.168.10.140/',
|
target: 'http://127.0.0.1/',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (path) => path.replace(/^\/api/, '')
|
rewrite: (path) => path.replace(/^\/api/, '')
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user