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 {
height: 100%;
}
body {
height: 100%;
}
html {
height: 100%;
}
</style>

View File

@ -9,7 +9,7 @@ type TAxiosOption = {
headers: object;
}
//记得修改上传路径/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";
// 导出baseURL使其可以在其他页面使用

View File

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

View File

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

View File

@ -34,7 +34,8 @@
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">个人记录列表</span>
<lay-button type="primary" @click="openNew()" size="sm">新增记录</lay-button>
</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 }">
<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>
@ -63,7 +64,8 @@
<lay-form :model="formData">
<lay-form-item required label="考评对象" prop="user_id">
<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>
</lay-form-item>
@ -81,28 +83,31 @@
</lay-select>
</lay-form-item>
<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 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 required label="证明人" prop="zm_user_id">
<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>
</lay-form-item>
<lay-form-item label="附件" mode="block" tips="大小限制1M">
<lay-upload ref="uploadRef" :beforeUpload="beforeUpload" :number="1" field="file"
:headers="{ token: userStore.token }" url="/api/common/upload" @cutdone="getCutDone"
v-model="file1" :auto="true" :cut="false" :cutOptions="cutOptions" @done="getFileDone">
<template #preview>
<a v-if="formData.fj_url!=''" style="color: #009688" :href="formData.fj_url" target="_blank">
{{ formData.fj_url }}
</a>
</template>
</lay-upload>
</lay-form-item>
<lay-upload ref="uploadRef" :beforeUpload="beforeUpload" :number="1" field="file"
:headers="{ token: userStore.token }" url="/api/common/upload" @cutdone="getCutDone" v-model="file1"
:auto="true" :cut="false" :cutOptions="cutOptions" @done="getFileDone">
<template #preview>
<a v-if="formData.fj_url != ''" style="color: #009688" :href="formData.fj_url" target="_blank">
{{ formData.fj_url }}
</a>
</template>
</lay-upload>
</lay-form-item>
<lay-form-item label="备注" prop="notes">
<lay-textarea v-model="formData.notes" placeholder="请输入备注"></lay-textarea>
</lay-form-item>
@ -148,6 +153,11 @@
{{ detailData.notes || '暂无备注' }}
</lay-descriptions-item>
</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-item label="附件">
@ -233,7 +243,7 @@ const getFileDone = (res: UploadResponse) => {
const selectedItemTipsScore = ref('');
// handleItemChange
const handleItemChange = (value: string | number | object) => {
const selectedItem = evaluationItems.value.find(item => item.id == value)
console.log(selectedItem);
if (selectedItem) {
@ -246,10 +256,10 @@ const handleItemChange = (value: string | number | object) => {
const beforeUpload = (file) => {
var isOver = true;
console.log(file);
if(file.size > 1048576) {
if (file.size > 1048576) {
isOver = false;
layer.msg(`文件最大上传为: 1MB`, { icon: 2,time: 2000})
}
layer.msg(`文件最大上传为: 1MB`, { icon: 2, time: 2000 })
}
return new Promise((resolver) => resolver(isOver));
}
onMounted(() => {
@ -262,10 +272,10 @@ const searchForm = reactive({
status: ''
})
const cutOptions = {
copperOption: {
center: false,
aspectRatio: 1,
}
copperOption: {
center: false,
aspectRatio: 1,
}
}
const cutUrl = ref("");
const uploadRef = ref(null)
@ -281,10 +291,10 @@ const page = reactive({
const getAdditionList = () => {
const params = {
page: page.current,
size: page.limit,
...searchForm
}
page: page.current,
size: page.limit,
...searchForm
}
getAddition(params).then((res) => {
console.log(res);
if (res.code == 1) {
@ -299,7 +309,7 @@ const evaluationItems = ref<EvaluationItem[]>([])
const selectedItemTips = ref('')
const getHierarchicalData = () => {
scoringGetHierarchicalData({page:1,size:1000}).then((res) => {
scoringGetHierarchicalData({ page: 1, size: 1000 }).then((res) => {
console.log(res)
if (res.code == 1) {
evaluationItems.value = res.data;
@ -389,13 +399,13 @@ const resetSearch = () => {
const change = ({ current, limit }: { current: number, limit: number }) => {
page.current = current
page.limit = limit
// getListData() //
// getListData() //
}
const maxInput = ref({
single_score_max:10,
single_score_min:0,
single_score_max: 10,
single_score_min: 0,
});
const getUserList = () => {
@ -449,7 +459,7 @@ const columns = [
title: "记录状态",
width: "100px",
customSlot: 'status',
key: "status",
key: "status",
align: 'center'
},
{
@ -490,7 +500,7 @@ const showDetail = (data: any) => {
const deleteRecord = async (data: any) => {
try {
await getAdditionDelete({id: data.id}); //
await getAdditionDelete({ id: data.id }); //
layer.msg('删除成功!', { icon: 1 });
} catch (error) {
layer.msg('删除失败!', { icon: 2 });

View File

@ -22,6 +22,7 @@
<div class="notice-info">
<span>时间{{ currentNotice.createtime }}</span>
</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>
</div>

View File

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

View File

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

View File

@ -16,7 +16,7 @@
<lay-icon v-else class="layui-icon-right"></lay-icon>
</div>
</div>
<div style="flex: 1; padding: 10px; over-flow: auto">
<div style="flex: 1; padding: 10px; overflow: auto">
<!-- table -->
<lay-card>
<lay-form>
@ -49,7 +49,7 @@
<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>
<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">
<template v-slot:scoringrecord_status="{ row }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -753,10 +753,10 @@
{ title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
{
title: '操作',
width: '180px',
customSlot: 'operator',
key: 'operator',
fixed: 'right', align: 'center'
width: '180px',
customSlot: 'operator',
key: 'operator',
fixed: 'right', align: 'center'
}
])
const dataSource = ref()
@ -882,5 +882,21 @@
.layui-tab-content {
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>

File diff suppressed because it is too large Load Diff

View File

@ -49,7 +49,7 @@
<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>
<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">
<template v-slot:scoringrecord_status="{ row }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -876,5 +876,21 @@
.layui-tab-content {
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>

View File

@ -32,7 +32,7 @@
</lay-col>
<lay-col :md="5">
<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>
</lay-form-item>
</lay-col>
@ -119,6 +119,12 @@ const ser = reactive({
nickname: '',
year: dayjs().year()
});
const toReset = () => {
ser.type = 1;
ser.nickname = '';
ser.year = dayjs().year();
getGroupEvaluation();
}
const toSearch = () => {
page.current = 1;
getGroupEvaluation();
@ -150,6 +156,8 @@ const getGroupEvaluation = () => {
console.log(res)
if (res.code == 1) {
dataSource.value = res.data;
}else{
dataSource.value = [];
}
})
}

View File

@ -49,7 +49,7 @@
<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>
<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">
<template v-slot:scoringrecord_status="{ row }">
<!-- 1.已自评 2.未自评 3.科室已评 4.医院已评 5.支部已评 6.总党支已评 -->
@ -882,5 +882,21 @@
.layui-tab-content {
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>