1.年末考评-年末科室考评,显示科室列表的时候,信息超过显示宽度,没有自动显示滑动轮

2.日常考评-考评评价管理,点击查询没反应
3.系统管理-人员信息-执照勾选功能未体现
This commit is contained in:
王创世 2025-04-11 16:54:09 +08:00
parent 045c637581
commit a980b649fd
14 changed files with 983 additions and 857 deletions

BIN
dist.zip Normal file

Binary file not shown.

View File

@ -7,10 +7,14 @@
#app { #app {
height: 100%; height: 100%;
} }
body { body {
height: 100%; height: 100%;
} }
html { html {
height: 100%; height: 100%;
} }
</style> </style>

View File

@ -9,7 +9,7 @@ type TAxiosOption = {
headers: object; headers: object;
} }
//记得修改上传路径/api/common/upload //记得修改上传路径/api/common/upload
const baseURL = 'http://yfyd.hschool.com.cn' // 设置基础URL前缀 const baseURL = 'https://yfyd.xysdwrmyy.cn' // 设置基础URL前缀
//const baseURL="http://127.0.0.1"; //const baseURL="http://127.0.0.1";
// 导出baseURL使其可以在其他页面使用 // 导出baseURL使其可以在其他页面使用

View File

@ -87,7 +87,7 @@ const columns = [
{ {
title: "记录时间", title: "记录时间",
width: "180px", width: "180px",
key: "createtime" key: "createtime",
}, },
] ]
@ -97,4 +97,6 @@ onMounted(() => {
</script> </script>
<style scoped></style> <style scoped>
</style>

View File

@ -382,10 +382,10 @@ const addButton = ref([
// layer.msg('', {icon: 2, time: 1000}) // layer.msg('', {icon: 2, time: 1000})
// return; // return;
// } // }
if (addData.evaluation_start_type == null) { // if (addData.evaluation_start_type == null) {
layer.msg('请选择考评开始类型!', {icon: 2, time: 1000}) // layer.msg('', {icon: 2, time: 1000})
return; // return;
} // }
if (addData.start_time == null) { if (addData.start_time == null) {
layer.msg('请选择考评开始时间!', {icon: 2, time: 1000}) layer.msg('请选择考评开始时间!', {icon: 2, time: 1000})
return; return;

View File

@ -34,7 +34,8 @@
<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 size="lg" height="500px" :columns="columns" :data-source="dataSource" :page="page" @change="change"> <lay-table size="lg" height="500px" :columns="columns" :data-source="dataSource" :page="page"
@change="change">
<template v-slot:status="{ data }"> <template v-slot:status="{ data }">
<lay-tag v-if="data.status == 1" type="primary" size="sm">待审核</lay-tag> <lay-tag v-if="data.status == 1" type="primary" size="sm">待审核</lay-tag>
<lay-tag v-if="data.status == 2" type="success" size="sm">审核通过</lay-tag> <lay-tag v-if="data.status == 2" type="success" size="sm">审核通过</lay-tag>
@ -63,7 +64,8 @@
<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+'('+user.code+')'"> <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>
@ -81,23 +83,26 @@
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
<lay-form-item required label="分值" :tips="selectedItemTipsScore" prop="score_value"> <lay-form-item required label="分值" :tips="selectedItemTipsScore" prop="score_value">
<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" :max="dayjs().format('YYYY-MM-DD')" 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+'('+user.code+')'"> <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>
<lay-form-item label="附件" mode="block" tips="大小限制1M"> <lay-form-item label="附件" mode="block" tips="大小限制1M">
<lay-upload ref="uploadRef" :beforeUpload="beforeUpload" :number="1" field="file" <lay-upload ref="uploadRef" :beforeUpload="beforeUpload" :number="1" field="file"
:headers="{ token: userStore.token }" url="/api/common/upload" @cutdone="getCutDone" :headers="{ token: userStore.token }" url="/api/common/upload" @cutdone="getCutDone" v-model="file1"
v-model="file1" :auto="true" :cut="false" :cutOptions="cutOptions" @done="getFileDone"> :auto="true" :cut="false" :cutOptions="cutOptions" @done="getFileDone">
<template #preview> <template #preview>
<a v-if="formData.fj_url!=''" style="color: #009688" :href="formData.fj_url" target="_blank"> <a v-if="formData.fj_url != ''" style="color: #009688" :href="formData.fj_url" target="_blank">
{{ formData.fj_url }} {{ formData.fj_url }}
</a> </a>
</template> </template>
@ -148,6 +153,11 @@
{{ detailData.notes || '暂无备注' }} {{ detailData.notes || '暂无备注' }}
</lay-descriptions-item> </lay-descriptions-item>
</lay-descriptions> </lay-descriptions>
<lay-descriptions v-if="detailData.status == 3" title="驳回原因" :column="1" border style="margin-top: 20px">
<lay-descriptions-item label="驳回原因">
{{ detailData.content }}
</lay-descriptions-item>
</lay-descriptions>
<lay-descriptions v-if="detailData.fj_url" title="附件信息" :column="1" border style="margin-top: 20px"> <lay-descriptions v-if="detailData.fj_url" title="附件信息" :column="1" border style="margin-top: 20px">
<lay-descriptions-item label="附件"> <lay-descriptions-item label="附件">
@ -246,9 +256,9 @@ const handleItemChange = (value: string | number | object) => {
const beforeUpload = (file) => { const beforeUpload = (file) => {
var isOver = true; var isOver = true;
console.log(file); console.log(file);
if(file.size > 1048576) { if (file.size > 1048576) {
isOver = false; isOver = false;
layer.msg(`文件最大上传为: 1MB`, { icon: 2,time: 2000}) layer.msg(`文件最大上传为: 1MB`, { icon: 2, time: 2000 })
} }
return new Promise((resolver) => resolver(isOver)); return new Promise((resolver) => resolver(isOver));
} }
@ -299,7 +309,7 @@ const evaluationItems = ref<EvaluationItem[]>([])
const selectedItemTips = ref('') const selectedItemTips = ref('')
const getHierarchicalData = () => { const getHierarchicalData = () => {
scoringGetHierarchicalData({page:1,size:1000}).then((res) => { scoringGetHierarchicalData({ page: 1, size: 1000 }).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
evaluationItems.value = res.data; evaluationItems.value = res.data;
@ -394,8 +404,8 @@ const change = ({ current, limit }: { current: number, limit: number }) => {
const maxInput = ref({ const maxInput = ref({
single_score_max:10, single_score_max: 10,
single_score_min:0, single_score_min: 0,
}); });
const getUserList = () => { const getUserList = () => {
@ -490,7 +500,7 @@ const showDetail = (data: any) => {
const deleteRecord = async (data: any) => { const deleteRecord = async (data: any) => {
try { try {
await getAdditionDelete({id: data.id}); // await getAdditionDelete({ id: data.id }); //
layer.msg('删除成功!', { icon: 1 }); layer.msg('删除成功!', { icon: 1 });
} catch (error) { } catch (error) {
layer.msg('删除失败!', { icon: 2 }); layer.msg('删除失败!', { icon: 2 });

View File

@ -22,6 +22,7 @@
<div class="notice-info"> <div class="notice-info">
<span>时间{{ currentNotice.createtime }}</span> <span>时间{{ currentNotice.createtime }}</span>
</div> </div>
<div class="notice-title" style="font-size: 22px; font-weight: bold;text-align: center;margin-bottom: 20px;">{{ currentNotice.title }}</div>
<div class="notice-content" v-html="currentNotice.content"> <div class="notice-content" v-html="currentNotice.content">
</div> </div>
</div> </div>

View File

@ -119,18 +119,21 @@ const columns6 = [
{ {
title: "科室名称", title: "科室名称",
width: "200px", width: "200px",
key: "name" key: "name",
align: 'center'
}, },
{ {
title: "科室描述", title: "科室描述",
width: "300px", width: "300px",
key: "describe" key: "describe",
align: 'center'
}, },
{ {
title: "状态", title: "状态",
width: "100px", width: "100px",
customSlot: 'status', customSlot: 'status',
key: "status" key: "status",
align: 'center'
}, },
{ {
title: '操作', title: '操作',

View File

@ -77,9 +77,9 @@
<lay-form :model="model11" ref="layFormRef11" mode="inline"> <lay-form :model="model11" ref="layFormRef11" mode="inline">
<lay-form-item label="证件照" prop="username" tips="大小限制1MB"> <lay-form-item label="证件照" prop="username" tips="大小限制1MB">
<lay-upload :beforeUpload="beforeUpload" style="width:180px;" ref="uploadRefA" :number="1" field="file" <lay-upload :beforeUpload="beforeUpload" style="width:180px;" ref="uploadRefA" :number="1" field="file"
:headers="{ token: userStore.token }" :url="baseURL+'/api/common/upload'" :headers="{ token: userStore.token }" :url="baseURL + '/api/common/upload'" @cutdone="getCutDone2"
@cutdone="getCutDone2" v-model="file2" :auto="true" acceptMime="images" :cut="false" v-model="file2" :auto="true" acceptMime="images" :cut="false" :cutOptions="cutOptions"
:cutOptions="cutOptions" @done="getFileDone2"> @done="getFileDone2">
<template #preview> <template #preview>
<div class="easy-wrap" v-if="model11.avatar"> <div class="easy-wrap" v-if="model11.avatar">
<img :src="model11.avatar" style="width: 100px;" /> <img :src="model11.avatar" style="width: 100px;" />
@ -125,9 +125,9 @@
</lay-form-item> </lay-form-item>
<lay-form-item label="资格证图片" prop="username" tips="大小限制1MB"> <lay-form-item label="资格证图片" prop="username" tips="大小限制1MB">
<lay-upload style="width:180px;" ref="uploadRef" :number="1" field="file" <lay-upload style="width:180px;" ref="uploadRef" :number="1" field="file"
:headers="{ token: userStore.token }" :url="baseURL+'/api/common/upload'" :headers="{ token: userStore.token }" :url="baseURL + '/api/common/upload'" @cutdone="getCutDone"
@cutdone="getCutDone" v-model="file1" :auto="true" acceptMime="images" :cut="false" v-model="file1" :auto="true" acceptMime="images" :cut="false" :cutOptions="cutOptions"
:cutOptions="cutOptions" :beforeUpload="beforeUpload" @done="getFileDone" @error="getFileError"> :beforeUpload="beforeUpload" @done="getFileDone" @error="getFileError">
<template #preview> <template #preview>
<div class="easy-wrap" v-if="model11.license_image"> <div class="easy-wrap" v-if="model11.license_image">
<img :src="model11.license_image" style="width: 100px;" /> <img :src="model11.license_image" style="width: 100px;" />
@ -165,6 +165,10 @@
<lay-select-option :value="1" label="启用"></lay-select-option> <lay-select-option :value="1" label="启用"></lay-select-option>
</lay-select> </lay-select>
</lay-form-item> </lay-form-item>
<lay-form-item label="执照勾选">
<lay-radio v-model="model11.zz" name="action" :value="1" label="展示"></lay-radio>
<lay-radio v-model="model11.zz" name="action" :value="2" label="不展示"></lay-radio>
</lay-form-item>
</lay-form> </lay-form>
</div> </div>
</lay-layer> </lay-layer>
@ -215,9 +219,9 @@ const getFileDone2 = (res) => {
const beforeUpload = (file) => { const beforeUpload = (file) => {
var isOver = true; var isOver = true;
console.log(file); console.log(file);
if(file.size > 1048576) { if (file.size > 1048576) {
isOver = false; isOver = false;
layer.msg(`文件最大上传为: 1MB`, { icon: 2,time: 2000}) layer.msg(`文件最大上传为: 1MB`, { icon: 2, time: 2000 })
} }
return new Promise((resolver) => resolver(isOver)); return new Promise((resolver) => resolver(isOver));
} }
@ -364,6 +368,7 @@ const model11 = reactive({
certificate_code: '', certificate_code: '',
license_code: '', license_code: '',
administrative_position: '', administrative_position: '',
zz: 1,
}) })
const layFormRef11 = ref() const layFormRef11 = ref()
const addShow = ref(false) const addShow = ref(false)
@ -403,14 +408,14 @@ const changeAddShow = () => {
// //
const inputPassword = (value) => { const inputPassword = (value) => {
console.log(value); console.log(value);
if(value.length < 6) { if (value.length < 6) {
layer.msg('密码长度不能小于6位', { icon: 2 }); layer.msg('密码长度不能小于6位', { icon: 2 });
model11.password = ''; model11.password = '';
return; return;
} }
// //
const reg = /^[0-9a-zA-Z]+$/; const reg = /^[0-9a-zA-Z]+$/;
if(!reg.test(value)) { if (!reg.test(value)) {
layer.msg('密码只能包含数字和英文字母!', { icon: 2 }); layer.msg('密码只能包含数字和英文字母!', { icon: 2 });
model11.password = ''; model11.password = '';
return; return;
@ -419,7 +424,7 @@ const inputPassword = (value) => {
// //
const inputMobile = (value) => { const inputMobile = (value) => {
console.log(value); console.log(value);
if(!/^\d{11}$/.test(value)) { if (!/^\d{11}$/.test(value)) {
layer.msg('手机号格式不正确!', { icon: 2 }); layer.msg('手机号格式不正确!', { icon: 2 });
model11.mobile = ''; model11.mobile = '';
return; return;
@ -474,16 +479,15 @@ const addButton = ref([
layer.msg('科室不能为空!', { icon: 2 }); layer.msg('科室不能为空!', { icon: 2 });
return; return;
} }
// if (!model11.party_id) { if (model11.party_id) {
// layer.msg('', {icon: 2}); model11.party_level = JSON.stringify(model11.party_id);
// return; model11.party_id = model11.party_id[model11.party_id.length - 1];
// } }
model11.username = model11.code; model11.username = model11.code;
model11.group_level = JSON.stringify(model11.group_id); model11.group_level = JSON.stringify(model11.group_id);
model11.group_id = model11.group_id[model11.group_id.length - 1]; model11.group_id = model11.group_id[model11.group_id.length - 1];
console.log(model11.group_id) console.log(model11.group_id)
model11.party_level = JSON.stringify(model11.party_id);
model11.party_id = model11.party_id[model11.party_id.length - 1];
console.log(model11) console.log(model11)
if (addIsEdit.value == 1) { if (addIsEdit.value == 1) {
var res = await userDataAdd(model11); var res = await userDataAdd(model11);
@ -524,16 +528,17 @@ const del = async (row: any) => {
layer.msg(res.msg, { icon: 2 }); layer.msg(res.msg, { icon: 2 });
} }
} }
// //
const edit = (row: any) => { const edit = (row: any) => {
addIsEdit.value = 2; addIsEdit.value = 2;
model11.gender = parseInt(row.gender); model11.gender = parseInt(row.gender);
model11.status = parseInt(row.status); model11.status = parseInt(row.status);
model11.auth_group_id = parseInt(row.auth_group_id); model11.auth_group_id = parseInt(row.auth_group_id);
//model11.group_id = row.group_id;
model11.group_id = JSON.parse(row.group_level); model11.group_id = JSON.parse(row.group_level);
if (row.party_level) {
model11.party_id = JSON.parse(row.party_level); model11.party_id = JSON.parse(row.party_level);
}
model11.code = row.code; model11.code = row.code;
model11.username = row.code; model11.username = row.code;
model11.nickname = row.nickname; model11.nickname = row.nickname;
@ -612,10 +617,12 @@ const edit = (row: any) => {
background-color: #e8f1ff; background-color: #e8f1ff;
color: red; color: red;
} }
::v-deep .layui-cascader-panel-list { ::v-deep .layui-cascader-panel-list {
max-width: 300px !important; max-width: 300px !important;
} }
::v-deep .layui-cascader-panel-item{
padding: 8px 10px 8px 16px!important; ::v-deep .layui-cascader-panel-item {
padding: 8px 10px 8px 16px !important;
} }
</style> </style>

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>
@ -49,7 +49,7 @@
<lay-tab v-model="tab_id" @change="openTab"> <lay-tab v-model="tab_id" @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-item>
</lay-tab> </lay-tab>
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource" <lay-table class="layuitablebody" :page="page" height="600px" :columns="columns" :loading="loading" :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 }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 --> <!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -882,5 +882,21 @@
.layui-tab-content { .layui-tab-content {
padding: 0; padding: 0;
} }
.layuitablebody ::-webkit-scrollbar {
width: 5px;
height: 10px;
}
.layuitablebody ::-webkit-scrollbar-track {
background: #f1f1f1;
}
.layuitablebody ::-webkit-scrollbar-thumb {
background: rgb(0, 163, 148)!important;
}
.layuitablebody ::-webkit-scrollbar-thumb:hover {
background: rgb(0, 163, 148);
}
</style> </style>

View File

@ -23,7 +23,8 @@
<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" :max="dayjs().format('YYYY')" 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">
@ -49,7 +50,7 @@
<lay-tab v-model="tab_id" @change="openTab"> <lay-tab v-model="tab_id" @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-item>
</lay-tab> </lay-tab>
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource" <lay-table class="layuitablebody" :page="page" height="600px" :columns="columns" :loading="loading" :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 }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 --> <!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -186,31 +187,31 @@
</lay-container> </lay-container>
</lay-layer> </lay-layer>
</lay-container> </lay-container>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted } from 'vue' import { ref, reactive, onMounted } from 'vue'
import { layer } from '@layui/layui-vue' import { layer } from '@layui/layui-vue'
import { import {
getUserGroupNew, getUserGroupNew,
getGroupYear, getGroupYear,
getYearUserList, getYearUserList,
getYearListFind, getYearListUpdate, getYearListFind, getYearListUpdate,
getAnnualFindData getAnnualFindData
} from "@/api/module/home"; } from "@/api/module/home";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useUserStore } from '@/store/user'; import { useUserStore } from '@/store/user';
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { baseURL } from '@/api/http'; import { baseURL } from '@/api/http';
const route = useRoute() const route = useRoute()
const userStore = useUserStore() const userStore = useUserStore()
const userId = ref(); const userId = ref();
onMounted(() => { onMounted(() => {
if (route.params.id) { if (route.params.id) {
userId.value = parseInt(route.params.id); userId.value = parseInt(route.params.id);
} }
getLeftList(); getLeftList();
}) })
const columns6 = ref([ const columns6 = ref([
{ {
title: "考评项目", title: "考评项目",
width: "300px", width: "300px",
@ -232,8 +233,8 @@
key: "content_score", key: "content_score",
totalRow: true totalRow: true
} }
]) ])
const inputChange = (row) => { const inputChange = (row) => {
//dataSource6children //dataSource6children
let total = 0; let total = 0;
const index = dataSource6.value.findIndex(item => item.id === row.pid); const index = dataSource6.value.findIndex(item => item.id === row.pid);
@ -243,9 +244,9 @@
//rowindex //rowindex
dataSource6.value[index].avg_score = total; dataSource6.value[index].avg_score = total;
dataSource6.value[index].content_score = total; dataSource6.value[index].content_score = total;
} }
// //
const inputKsChange = (row) => { const inputKsChange = (row) => {
//dataSource6children //dataSource6children
let total = 0; let total = 0;
const index = dataSource6.value.findIndex(item => item.id === row.pid); const index = dataSource6.value.findIndex(item => item.id === row.pid);
@ -253,9 +254,9 @@
total += parseInt(item.department_score); total += parseInt(item.department_score);
}); });
dataSource6.value[index].department_score = total; dataSource6.value[index].department_score = total;
} }
// //
const inputZbChange = (row) => { const inputZbChange = (row) => {
//dataSource6children //dataSource6children
let total = 0; let total = 0;
const index = dataSource6.value.findIndex(item => item.id === row.pid); const index = dataSource6.value.findIndex(item => item.id === row.pid);
@ -263,9 +264,9 @@
total += parseInt(item.party_branch_score); total += parseInt(item.party_branch_score);
}); });
dataSource6.value[index].party_branch_score = total; dataSource6.value[index].party_branch_score = total;
} }
// //
const inputListZbShow = () => { const inputListZbShow = () => {
//dataSource6children //dataSource6children
dataSource6.value.forEach((item, index) => { dataSource6.value.forEach((item, index) => {
let total = 0; let total = 0;
@ -274,9 +275,9 @@
}); });
dataSource6.value[index].party_branch_score = total; dataSource6.value[index].party_branch_score = total;
}); });
} }
// //
const inputYyChange = (row) => { const inputYyChange = (row) => {
//dataSource6children //dataSource6children
let total = 0; let total = 0;
const index = dataSource6.value.findIndex(item => item.id === row.pid); const index = dataSource6.value.findIndex(item => item.id === row.pid);
@ -284,9 +285,9 @@
total += parseInt(item.hospital_score); total += parseInt(item.hospital_score);
}); });
dataSource6.value[index].hospital_score = total; dataSource6.value[index].hospital_score = total;
} }
// //
const inputListYyShow = () => { const inputListYyShow = () => {
dataSource6.value.forEach((item, index) => { dataSource6.value.forEach((item, index) => {
let total = 0; let total = 0;
item.children.forEach(item2 => { item.children.forEach(item2 => {
@ -294,9 +295,9 @@
}); });
dataSource6.value[index].hospital_score = total; dataSource6.value[index].hospital_score = total;
}); });
} }
// //
const inputZdzChange = (row) => { const inputZdzChange = (row) => {
//dataSource6children //dataSource6children
let total = 0; let total = 0;
const index = dataSource6.value.findIndex(item => item.id === row.pid); const index = dataSource6.value.findIndex(item => item.id === row.pid);
@ -304,9 +305,9 @@
total += parseInt(item.overall_party_score); total += parseInt(item.overall_party_score);
}); });
dataSource6.value[index].overall_party_score = total; dataSource6.value[index].overall_party_score = total;
} }
// //
const inputListZdzShow = () => { const inputListZdzShow = () => {
dataSource6.value.forEach((item, index) => { dataSource6.value.forEach((item, index) => {
let total = 0; let total = 0;
item.children.forEach(item2 => { item.children.forEach(item2 => {
@ -314,9 +315,9 @@
}); });
dataSource6.value[index].overall_party_score = total; dataSource6.value[index].overall_party_score = total;
}); });
} }
// //
const inputListKsShow = () => { const inputListKsShow = () => {
//dataSource6children //dataSource6children
dataSource6.value.forEach((item, index) => { dataSource6.value.forEach((item, index) => {
let total = 0; let total = 0;
@ -325,9 +326,9 @@
}); });
dataSource6.value[index].department_score = total; dataSource6.value[index].department_score = total;
}); });
} }
// //
const inputListZpShow = () => { const inputListZpShow = () => {
//dataSource6children //dataSource6children
dataSource6.value.forEach((item, index) => { dataSource6.value.forEach((item, index) => {
@ -338,45 +339,59 @@
dataSource6.value[index].avg_score = total; dataSource6.value[index].avg_score = total;
dataSource6.value[index].content_score = total; dataSource6.value[index].content_score = total;
}); });
} }
const userShow = ref(false); const userShow = ref(false);
const userColumns = ref([ const userColumns = ref([
{ title: '年度', width: '80px', key: 'year', align: 'center' }, { title: '年度', width: '80px', key: 'year', 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: 'party_branch_score', align: 'center', customSlot: ({row})=>{ },
return row.party_branch_score==''||row.party_branch_score==0?'未评分':row.party_branch_score; {
} }, title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({ row }) => {
{ title: '总党支评分', width: '100px', key: 'overall_party_score', align: 'center', customSlot: ({row})=>{ return row.department_score == '' || row.department_score == 0 ? '未评分' : row.department_score;
return row.overall_party_score==''||row.overall_party_score==0?'未评分':row.overall_party_score; }
} }, },
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center', customSlot: ({row})=>{ {
return row.hospital_score==''||row.hospital_score==0?'未评分':row.hospital_score; title: '支部评分', width: '100px', key: 'party_branch_score', align: 'center', customSlot: ({ row }) => {
} }, return row.party_branch_score == '' || row.party_branch_score == 0 ? '未评分' : row.party_branch_score;
{ title: '总得分', width: '100px', key: 'total_score', align: 'center', customSlot: ({row})=>{ }
return row.total_score==''||row.total_score==0?'未评分':row.total_score; },
} }, {
title: '总党支评分', width: '100px', key: 'overall_party_score', align: 'center', customSlot: ({ row }) => {
return row.overall_party_score == '' || row.overall_party_score == 0 ? '未评分' : row.overall_party_score;
}
},
{
title: '医院评分', width: '100px', key: 'hospital_score', align: 'center', customSlot: ({ row }) => {
return row.hospital_score == '' || row.hospital_score == 0 ? '未评分' : row.hospital_score;
}
},
{
title: '总得分', width: '100px', key: 'total_score', align: 'center', customSlot: ({ row }) => {
return row.total_score == '' || row.total_score == 0 ? '未评分' : row.total_score;
}
},
{ 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' },
]) ])
const userDataSource = ref([]); const userDataSource = ref([]);
const userTabId = ref(0); const userTabId = ref(0);
const userInfo = ref({}); const userInfo = ref({});
const searchAccountUser = ref(dayjs().year()); const searchAccountUser = ref(dayjs().year());
const openUserListShow = (row) => { const openUserListShow = (row) => {
userInfo.value = row; userInfo.value = row;
userShow.value = true; userShow.value = true;
getUserListInfo(); getUserListInfo();
} }
const getUserListInfo = () => { const getUserListInfo = () => {
getAnnualFindData({ getAnnualFindData({
'user_id': userInfo.value.id, 'user_id': userInfo.value.id,
'evaluation_id': userTabId.value, 'evaluation_id': userTabId.value,
@ -389,14 +404,14 @@
userDataSource.value = []; userDataSource.value = [];
} }
}) })
} }
const openUserTab = (d) => { const openUserTab = (d) => {
console.log(d) console.log(d)
userTabId.value = d; userTabId.value = d;
userDataSource.value = []; userDataSource.value = [];
getUserListInfo(); getUserListInfo();
} }
const getMonthlyInfo = (item, type) => { const getMonthlyInfo = (item, type) => {
addIsInfo.value = type; addIsInfo.value = type;
infoShow.value = true; infoShow.value = true;
console.log(item); console.log(item);
@ -493,28 +508,28 @@
totalRow: true totalRow: true
}) })
} }
} }
const toUserSearch = () => { const toUserSearch = () => {
getUserListInfo(); getUserListInfo();
} }
const openTab = (d) => { const openTab = (d) => {
console.log(d) console.log(d)
tab_id.value = d; tab_id.value = d;
dataSource.value = []; dataSource.value = [];
page.current = 1; page.current = 1;
getList(); getList();
} }
const page = reactive({ current: 1, limit: 10, total: 1 }) const page = reactive({ current: 1, limit: 10, total: 1 })
const change = (d) => { const change = (d) => {
console.log(d); console.log(d);
page.current = d.current; page.current = d.current;
page.limit = d.limit; page.limit = d.limit;
getList(); getList();
} }
const addIsInfo = ref(1); const addIsInfo = ref(1);
const infoShow = ref(false); const infoShow = ref(false);
const yearmonth = ref(dayjs().year()); const yearmonth = ref(dayjs().year());
const getList = () => { const getList = () => {
getYearUserList({ getYearUserList({
'user_id': userId.value, 'user_id': userId.value,
'group_id': group_id.value, 'group_id': group_id.value,
@ -531,9 +546,9 @@
layer.msg(res.msg, { icon: 2 }) layer.msg(res.msg, { icon: 2 })
} }
}) })
} }
const dataSerSource = ref([]); const dataSerSource = ref([]);
const getSerList = () => { const getSerList = () => {
getYearUserList({ getYearUserList({
'group_id': group_id.value, 'group_id': group_id.value,
'time': yearmonth.value, 'time': yearmonth.value,
@ -548,9 +563,9 @@
layer.msg(res.msg, { icon: 2 }) layer.msg(res.msg, { icon: 2 })
} }
}) })
} }
const thisInfo = ref(); const thisInfo = ref();
const getInfo = (row, type) => { const getInfo = (row, type) => {
infoShow.value = true; infoShow.value = true;
addIsInfo.value = type; addIsInfo.value = type;
thisInfo.value = row; thisInfo.value = row;
@ -646,8 +661,8 @@
totalRow: true totalRow: true
}) })
} }
} }
const getInfoMode = (row) => { const getInfoMode = (row) => {
getYearListFind({ getYearListFind({
evaluation_schedule_id: tab_id.value, evaluation_schedule_id: tab_id.value,
month: row.time, month: row.time,
@ -665,10 +680,10 @@
layer.msg(res.msg, { icon: 2 }) layer.msg(res.msg, { icon: 2 })
} }
}) })
} }
const tabList = ref([]); const tabList = ref([]);
const tab_id = ref(0); const tab_id = ref(0);
const getTabList = () => { const getTabList = () => {
getGroupYear({ 'group_id': group_id.value }).then((res) => { getGroupYear({ 'group_id': group_id.value }).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
@ -680,9 +695,9 @@
layer.msg(res.msg, { icon: 2 }) layer.msg(res.msg, { icon: 2 })
} }
}) })
} }
const group_id = ref(1); const group_id = ref(1);
const getLeftList = () => { const getLeftList = () => {
getUserGroupNew({}).then((res) => { getUserGroupNew({}).then((res) => {
console.log(res) console.log(res)
if (res.code == 1) { if (res.code == 1) {
@ -694,62 +709,74 @@
layer.msg(res.msg, { icon: 2 }) layer.msg(res.msg, { icon: 2 })
} }
}) })
} }
const data = ref([]) const data = ref([])
const isFold = ref(false) const isFold = ref(false)
const searchQuery = ref({ const searchQuery = ref({
year: '', year: '',
evaluateTarget: '', evaluateTarget: '',
status: '' status: ''
}) })
function toReset() { function toReset() {
searchQuery.value = { searchQuery.value = {
year: '', year: '',
evaluateTarget: '', evaluateTarget: '',
status: '' status: ''
} }
} }
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;
getList(); getList();
// change(page) // change(page)
} }
function toSearch() { function toSearch() {
page.current = 1; page.current = 1;
getList(); getList();
} }
const loading = ref(false) const loading = ref(false)
const selectedKeys = ref() const selectedKeys = ref()
const columns = ref([ 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', customSlot: 'nickname', align: 'center' }, { title: '考评对象', width: '100px', key: 'nickname', customSlot: 'nickname', align: 'center' },
{ 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: '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: 'party_score_scoringrecord', align: 'center', customSlot: ({row})=>{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({ row }) => {
return row.party_score_scoringrecord==''||row.party_score_scoringrecord==0?'未评分':row.party_score_scoringrecord; return row.department_score_scoringrecord == '' || row.department_score_scoringrecord == 0 ? '未评分' : row.department_score_scoringrecord;
} }, }
{ title: '党总支评分', width: '100px', key: 'overall_score_scoringrecord', align: 'center', customSlot: ({row})=>{ },
return row.overall_score_scoringrecord==''||row.overall_score_scoringrecord==0?'未评分':row.overall_score_scoringrecord; {
} }, title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center', customSlot: ({ row }) => {
{ title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center', customSlot: ({row})=>{ return row.party_score_scoringrecord == '' || row.party_score_scoringrecord == 0 ? '未评分' : row.party_score_scoringrecord;
return row.hospital_score_scoringrecord==''||row.hospital_score_scoringrecord==0?'未评分':row.hospital_score_scoringrecord; }
} }, },
{ title: '总得分', width: '100px', key: 'total_score', align: 'center', customSlot: ({row})=>{ {
return row.total_score==''||row.total_score==0?'未评分':row.total_score; title: '党总支评分', width: '100px', key: 'overall_score_scoringrecord', align: 'center', customSlot: ({ row }) => {
} }, return row.overall_score_scoringrecord == '' || row.overall_score_scoringrecord == 0 ? '未评分' : row.overall_score_scoringrecord;
}
},
{
title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center', customSlot: ({ row }) => {
return row.hospital_score_scoringrecord == '' || row.hospital_score_scoringrecord == 0 ? '未评分' : row.hospital_score_scoringrecord;
}
},
{
title: '总得分', width: '100px', key: 'total_score', align: 'center', customSlot: ({ row }) => {
return row.total_score == '' || row.total_score == 0 ? '未评分' : row.total_score;
}
},
{ title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' }, { title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
{ {
title: '操作', title: '操作',
@ -758,9 +785,9 @@
key: 'operator', key: 'operator',
fixed: 'right', align: 'center' fixed: 'right', align: 'center'
} }
]) ])
const dataSource = ref() const dataSource = ref()
const addButton = ref([ const addButton = ref([
{ {
text: "确认", text: "确认",
callback: async () => { callback: async () => {
@ -789,9 +816,9 @@
infoShow.value = false; infoShow.value = false;
} }
} }
]) ])
const layerEnd = () => { const layerEnd = () => {
columns6.value = [ columns6.value = [
{ {
title: "考评项目", title: "考评项目",
@ -815,48 +842,48 @@
totalRow: true totalRow: true
} }
]; ];
} }
const dataSource6 = ref([]) const dataSource6 = ref([])
const openDownload = () => { const openDownload = () => {
window.open(baseURL + '/uploads/信阳市传染病医院医德医风考评优秀等次人员复审表.xls', '_blank') window.open(baseURL + '/uploads/信阳市传染病医院医德医风考评优秀等次人员复审表.xls', '_blank')
} }
</script> </script>
<style> <style>
.layui-table-header .layui-table-cell { .layui-table-header .layui-table-cell {
background-color: #ECF8FA !important; background-color: #ECF8FA !important;
} }
.organization-box { .organization-box {
width: calc(100vw - 240px); width: calc(100vw - 240px);
height: calc(100vh - 110px); height: calc(100vh - 110px);
margin-top: 10px; margin-top: 10px;
box-sizing: border-box; box-sizing: border-box;
background-color: #fff; background-color: #fff;
overflow: hidden; overflow: hidden;
} }
.left-tree { .left-tree {
display: inline-block; display: inline-block;
padding: 20px 15px 0 5px; padding: 20px 15px 0 5px;
height: 1200px; height: 1200px;
border-right: 1px solid #e6e6e6; border-right: 1px solid #e6e6e6;
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
} }
/* todo layui-tree-entry 设置无效 */ /* todo layui-tree-entry 设置无效 */
.layui-tree-entry { .layui-tree-entry {
position: relative; position: relative;
padding: 10px 0; padding: 10px 0;
height: 20px; height: 20px;
line-height: 20px; line-height: 20px;
white-space: nowrap; white-space: nowrap;
} }
.isFold { .isFold {
position: absolute; position: absolute;
top: 36%; top: 36%;
right: -10px; right: -10px;
@ -867,22 +894,38 @@
background-color: #fff; background-color: #fff;
border: 1px solid #e6e6e6; border: 1px solid #e6e6e6;
cursor: pointer; cursor: pointer;
} }
.search-input { .search-input {
display: inline-block; display: inline-block;
width: 98%; width: 98%;
margin-right: 10px; margin-right: 10px;
} }
.isChecked { .isChecked {
display: inline-block; display: inline-block;
background-color: #e8f1ff; background-color: #e8f1ff;
color: red; color: red;
} }
.layui-tab-content { .layui-tab-content {
padding: 0; padding: 0;
} }
</style>
.layuitablebody ::-webkit-scrollbar {
width: 5px;
height: 10px;
}
.layuitablebody ::-webkit-scrollbar-track {
background: #f1f1f1;
}
.layuitablebody ::-webkit-scrollbar-thumb {
background: rgb(0, 163, 148)!important;
}
.layuitablebody ::-webkit-scrollbar-thumb:hover {
background: rgb(0, 163, 148);
}
</style>

View File

@ -49,7 +49,7 @@
<lay-tab v-model="tab_id" @change="openTab"> <lay-tab v-model="tab_id" @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-item>
</lay-tab> </lay-tab>
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource" <lay-table class="layuitablebody" :page="page" height="600px" :columns="columns" :loading="loading" :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 }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 --> <!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -876,5 +876,21 @@
.layui-tab-content { .layui-tab-content {
padding: 0; padding: 0;
} }
.layuitablebody ::-webkit-scrollbar {
width: 5px;
height: 10px;
}
.layuitablebody ::-webkit-scrollbar-track {
background: #f1f1f1;
}
.layuitablebody ::-webkit-scrollbar-thumb {
background: rgb(0, 163, 148)!important;
}
.layuitablebody ::-webkit-scrollbar-thumb:hover {
background: rgb(0, 163, 148);
}
</style> </style>

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" :max="dayjs().format('YYYY')" v-model="yearmonth" placeholder="年" <lay-date-picker type="year" :max="dayjs().format('YYYY')" v-model="ser.year" placeholder="年"
allow-clear></lay-date-picker> allow-clear></lay-date-picker>
</lay-form-item> </lay-form-item>
</lay-col> </lay-col>
@ -119,6 +119,12 @@ const ser = reactive({
nickname: '', nickname: '',
year: dayjs().year() year: dayjs().year()
}); });
const toReset = () => {
ser.type = 1;
ser.nickname = '';
ser.year = dayjs().year();
getGroupEvaluation();
}
const toSearch = () => { const toSearch = () => {
page.current = 1; page.current = 1;
getGroupEvaluation(); getGroupEvaluation();
@ -150,6 +156,8 @@ const getGroupEvaluation = () => {
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 = [];
} }
}) })
} }

View File

@ -49,7 +49,7 @@
<lay-tab v-model="tab_id" @change="openTab"> <lay-tab v-model="tab_id" @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-item>
</lay-tab> </lay-tab>
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource" <lay-table class="layuitablebody" :page="page" height="600px" :columns="columns" :loading="loading" :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 }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 --> <!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -882,5 +882,21 @@
.layui-tab-content { .layui-tab-content {
padding: 0; padding: 0;
} }
.layuitablebody ::-webkit-scrollbar {
width: 5px;
height: 10px;
}
.layuitablebody ::-webkit-scrollbar-track {
background: #f1f1f1;
}
.layuitablebody ::-webkit-scrollbar-thumb {
background: rgb(0, 163, 148)!important;
}
.layuitablebody ::-webkit-scrollbar-thumb:hover {
background: rgb(0, 163, 148);
}
</style> </style>