1.增加发布党风廉政教育
2.增加发布党风廉政教育问卷,添加问题,编辑问题,删除 3.增加党风廉政教育查看详情 4增加党风廉政教育问卷填写 5.增加拒收红包审核页面,并增加驳回原因 6.增加考评级别管理,增加,编辑删除 7.优化所有页面元素保持统一主题
This commit is contained in:
parent
abeb61831a
commit
5dfab9315b
2
auto-imports.d.ts
vendored
2
auto-imports.d.ts
vendored
@ -1,5 +1,5 @@
|
|||||||
// Generated by 'unplugin-auto-import'
|
// Generated by 'unplugin-auto-import'
|
||||||
export {}
|
export {}
|
||||||
declare global {
|
declare global {
|
||||||
|
const layer: typeof import('@layui/layer-vue')['layer']
|
||||||
}
|
}
|
||||||
|
1
components.d.ts
vendored
1
components.d.ts
vendored
@ -14,6 +14,7 @@ declare module 'vue' {
|
|||||||
LayCard: typeof import('@layui/layui-vue')['LayCard']
|
LayCard: typeof import('@layui/layui-vue')['LayCard']
|
||||||
LayCascader: typeof import('@layui/layui-vue')['LayCascader']
|
LayCascader: typeof import('@layui/layui-vue')['LayCascader']
|
||||||
LayCheckbox: typeof import('@layui/layui-vue')['LayCheckbox']
|
LayCheckbox: typeof import('@layui/layui-vue')['LayCheckbox']
|
||||||
|
LayCheckboxGroup: typeof import('@layui/layui-vue')['LayCheckboxGroup']
|
||||||
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']
|
||||||
|
@ -462,6 +462,27 @@ export function getQuestionnaireDelete(data: any) {
|
|||||||
export function getQuestionnaireAdd(data: any) {
|
export function getQuestionnaireAdd(data: any) {
|
||||||
return Http.post('/api/backend/questionnaire/topicAdd', data)
|
return Http.post('/api/backend/questionnaire/topicAdd', data)
|
||||||
}
|
}
|
||||||
|
// 问卷填写
|
||||||
|
export function getQuestionnaireFill(data: any) {
|
||||||
|
return Http.post('/api/backend/questionnaire/appAdd', data)
|
||||||
|
}
|
||||||
|
// 考评级别
|
||||||
|
export function getEvaluationlevelData(data: any) {
|
||||||
|
return Http.post('/api/backend/Evaluationlevel/geEvaluationlevelData', data)
|
||||||
|
}
|
||||||
|
// 考评级别新增
|
||||||
|
export function getEvaluationlevelCreate(data: any) {
|
||||||
|
return Http.post('/api/backend/Evaluationlevel/create', data)
|
||||||
|
}
|
||||||
|
// 考评级别编辑
|
||||||
|
export function getEvaluationlevelUpdate(data: any) {
|
||||||
|
return Http.post('/api/backend/Evaluationlevel/update', data)
|
||||||
|
}
|
||||||
|
// 考评级别删除
|
||||||
|
export function getEvaluationlevelDelete(data: any) {
|
||||||
|
return Http.post('/api/backend/Evaluationlevel/delete', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ export default {
|
|||||||
? '60px'
|
? '60px'
|
||||||
: appStore.subfield && appStore.subfieldPosition == 'side'
|
: appStore.subfield && appStore.subfieldPosition == 'side'
|
||||||
? '280px'
|
? '280px'
|
||||||
: '220px'
|
: '250px'
|
||||||
)
|
)
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
|
@ -89,12 +89,18 @@ export default [
|
|||||||
path: '/packet',
|
path: '/packet',
|
||||||
redirect: '/packet/index',
|
redirect: '/packet/index',
|
||||||
component: BasicLayout,
|
component: BasicLayout,
|
||||||
|
meta: { title: '拒收红包管理' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/packet/index',
|
path: '/packet/index',
|
||||||
name: 'Packet',
|
name: 'Packet',
|
||||||
component: () => import('../../views/packet/index.vue'),
|
component: () => import('../../views/packet/index.vue'),
|
||||||
meta: { title: '拒收红包', requireAuth: true, closable: true },
|
meta: { title: '拒收红包', requireAuth: true, closable: true },
|
||||||
|
}, {
|
||||||
|
path: '/packet/examine',
|
||||||
|
name: 'PacketExamine',
|
||||||
|
component: () => import('../../views/packet/examine.vue'),
|
||||||
|
meta: { title: '拒收红包审核', requireAuth: true, closable: true },
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}, {
|
}, {
|
||||||
@ -409,6 +415,16 @@ export default [
|
|||||||
name: 'educationQuestion',
|
name: 'educationQuestion',
|
||||||
component: () => import('../../views/education/question.vue'),
|
component: () => import('../../views/education/question.vue'),
|
||||||
meta: { title: '问卷发布', requireAuth: true, closable: true },
|
meta: { title: '问卷发布', requireAuth: true, closable: true },
|
||||||
|
}, {
|
||||||
|
path: '/education/list',
|
||||||
|
name: 'educationList',
|
||||||
|
component: () => import('../../views/education/list.vue'),
|
||||||
|
meta: { title: '党风廉政教育', requireAuth: true, closable: true },
|
||||||
|
}, {
|
||||||
|
path: '/education/question_list',
|
||||||
|
name: 'educationQuestionList',
|
||||||
|
component: () => import('../../views/education/question_list.vue'),
|
||||||
|
meta: { title: '党风廉政教育问卷', requireAuth: true, closable: true },
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}, {
|
}, {
|
||||||
|
@ -35,8 +35,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<lay-table height="600px" :columns="columns" :data-source="dataSource" :page="page" @change="change">
|
<lay-table height="600px" :columns="columns" :data-source="dataSource" :page="page" @change="change">
|
||||||
<template #status="{ row }">
|
<template #status="{ row }">
|
||||||
<span v-if="row.acceptance_status == 1" style="color: #FFB800">待处理</span>
|
<lay-tag v-if="row.acceptance_status == 1" type="warm" size="sm">待处理</lay-tag>
|
||||||
<span v-if="row.acceptance_status == 2" style="color: #00CC66">已回复</span>
|
<lay-tag v-if="row.acceptance_status == 2" type="normal" size="sm">已回复</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<lay-space size="lg">
|
<lay-space size="lg">
|
||||||
@ -82,8 +82,8 @@
|
|||||||
<div class="detail-item">
|
<div class="detail-item">
|
||||||
<div class="detail-label">处理状态:</div>
|
<div class="detail-label">处理状态:</div>
|
||||||
<div class="detail-value">
|
<div class="detail-value">
|
||||||
<span v-if="detailInfo.acceptance_status == 1" class="status-pending">待处理</span>
|
<lay-tag v-if="detailInfo.acceptance_status == 1" type="warm" size="sm">待处理</lay-tag>
|
||||||
<span v-if="detailInfo.acceptance_status == 2" class="status-replied">已回复</span>
|
<lay-tag v-if="detailInfo.acceptance_status == 2" type="normal" size="sm">已回复</lay-tag>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail-item detail-item-full">
|
<div class="detail-item detail-item-full">
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
<lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6"
|
<lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6"
|
||||||
:data-source="dataSource6">
|
:data-source="dataSource6">
|
||||||
<template v-slot:score_type="{data}">
|
<template v-slot:score_type="{data}">
|
||||||
<lay-tag v-if="data.score_type==1" type="normal">加分</lay-tag>
|
<lay-tag size="sm" v-if="data.score_type==1" type="normal">加分</lay-tag>
|
||||||
<lay-tag v-if="data.score_type==2" type="danger">减分</lay-tag>
|
<lay-tag size="sm" v-if="data.score_type==2" type="danger">减分</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template v-slot:scoring_category="{data}">
|
<!-- <template v-slot:scoring_category="{data}">
|
||||||
<span v-if="data.scoring_category==1">年度</span>
|
<span v-if="data.scoring_category==1">年度</span>
|
||||||
@ -152,38 +152,38 @@ const delShowMsd = async (data) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const columns6 = [
|
const columns6 = [
|
||||||
{
|
|
||||||
title: "序号",
|
|
||||||
width: "60px",
|
|
||||||
key: "id"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "加减分类型",
|
title: "加减分类型",
|
||||||
width: "90px",
|
width: "90px",
|
||||||
customSlot: 'score_type',
|
customSlot: 'score_type',
|
||||||
key: "score_type"
|
key: "score_type",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "项目名称",
|
title: "项目名称",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "project_name",
|
key: "project_name",
|
||||||
ellipsisTooltip:true,
|
ellipsisTooltip:true,
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "单次评分上限",
|
title: "单次评分上限",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "single_score_max"
|
key: "single_score_max",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "单次评分下限",
|
title: "单次评分下限",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "single_score_min"
|
key: "single_score_min",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "评分标准",
|
title: "评分标准",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "scoring_criteria",
|
key: "scoring_criteria",
|
||||||
ellipsisTooltip:true,
|
ellipsisTooltip:true,
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -19,14 +19,13 @@
|
|||||||
<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;">
|
||||||
<div style="padding: 10px">
|
<div style="padding: 10px">
|
||||||
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">个人记录列表</span>
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">考评级别设置</span>
|
||||||
<lay-button type="primary" @click="openNew()" size="sm">新增记录</lay-button>
|
<lay-button type="primary" @click="openNew()" size="sm">新增记录</lay-button>
|
||||||
</div>
|
</div>
|
||||||
<lay-table :page="page" :height="'100%'" :columns="columns" :loading="loading"
|
<lay-table :page="page" :height="'100%'" :columns="columns" :loading="loading" :data-source="dataSource"
|
||||||
:data-source="dataSource" v-model:selected-keys="selectedKeys" @change="change"
|
v-model:selected-keys="selectedKeys" @change="change" @sortChange="sortChange">
|
||||||
@sortChange="sortChange">
|
|
||||||
<template #status="{ row }">
|
<template #status="{ row }">
|
||||||
<lay-switch :model-value="row.status" @change="changeStatus($event, row)"></lay-switch>
|
<lay-switch :model-value="row.status" @change="changeStatus($event, row)"></lay-switch>
|
||||||
</template>
|
</template>
|
||||||
@ -34,23 +33,24 @@
|
|||||||
<lay-tag color="#165DFF" variant="light">{{ row.role }}</lay-tag>
|
<lay-tag color="#165DFF" variant="light">{{ row.role }}</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<lay-button size="xs" border="green" border-style="dashed"
|
<lay-space size="lg">
|
||||||
@click="changeVisible11('编辑', row)">编辑</lay-button>
|
<span style="color: #00A394;cursor: pointer" @click="changeVisible11('编辑', row)">编辑</span>
|
||||||
<lay-popconfirm content="确定要删除此用户吗?" @confirm="confirm" @cancel="cancel">
|
<lay-popconfirm trigger="click" content="确定要删除吗?" @confirm="confirm(row.id)" @cancel="cancel">
|
||||||
<lay-button size="xs" border="red" border-style="dashed">删除</lay-button>
|
<span style="color: #00A394;cursor: pointer">删除</span>
|
||||||
</lay-popconfirm>
|
</lay-popconfirm>
|
||||||
|
</lay-space>
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<lay-layer v-model="visible11" :title="title" :area="['500px', '400px']">
|
<lay-layer v-model="visible11" :type="4" :title="title" :area="['700px', '100%']">
|
||||||
<div style="padding: 20px">
|
<div style="padding: 20px">
|
||||||
<lay-form :model="model11" ref="layFormRef11" required>
|
<lay-form :model="model11" ref="layFormRef11" required>
|
||||||
<lay-form-item label="所属科室" prop="department">
|
<lay-form-item label="所属科室" prop="department">
|
||||||
<lay-input v-model="model11.department" disabled></lay-input>
|
<lay-input v-model="model11.department" disabled></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="级别名称" prop="levelName">
|
<lay-form-item label="级别名称" prop="levelName">
|
||||||
<lay-input v-model="model11.levelName"></lay-input>
|
<lay-input v-model="model11.levelName" placeholder="请输入级别名称"></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="名额" prop="quota">
|
<lay-form-item label="名额" prop="quota">
|
||||||
<lay-input-number v-model="model11.quota" :min="0"></lay-input-number>
|
<lay-input-number v-model="model11.quota" :min="0"></lay-input-number>
|
||||||
@ -58,6 +58,9 @@
|
|||||||
<lay-form-item label="最高评分" prop="maxScore">
|
<lay-form-item label="最高评分" prop="maxScore">
|
||||||
<lay-input-number v-model="model11.maxScore" :min="0" :max="100"></lay-input-number>
|
<lay-input-number v-model="model11.maxScore" :min="0" :max="100"></lay-input-number>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
|
<lay-form-item label="最低评分" prop="minScore">
|
||||||
|
<lay-input-number v-model="model11.minScore" :min="0" :max="100"></lay-input-number>
|
||||||
|
</lay-form-item>
|
||||||
</lay-form>
|
</lay-form>
|
||||||
<div style="width: 100%; text-align: center">
|
<div style="width: 100%; text-align: center">
|
||||||
<lay-button size="sm" type="primary" @click="toSubmit">保存</lay-button>
|
<lay-button size="sm" type="primary" @click="toSubmit">保存</lay-button>
|
||||||
@ -70,10 +73,13 @@
|
|||||||
<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 { getUserGroupNew } from '@/api/module/home';
|
import { getUserGroupNew, getEvaluationlevelData, getEvaluationlevelCreate, getEvaluationlevelUpdate, getEvaluationlevelDelete } from '@/api/module/home';
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getLeftList();
|
getLeftList();
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const leftId = ref(0);
|
const leftId = ref(0);
|
||||||
const data = ref()
|
const data = ref()
|
||||||
const getLeftList = () => {
|
const getLeftList = () => {
|
||||||
@ -82,83 +88,27 @@ const getLeftList = () => {
|
|||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
data.value = res.data;
|
data.value = res.data;
|
||||||
leftId.value = res.data[0].id;
|
leftId.value = res.data[0].id;
|
||||||
|
if (res.data && res.data.length > 0) {
|
||||||
|
selectedNode.value = {
|
||||||
|
id: res.data[0].id,
|
||||||
|
name: res.data[0].name
|
||||||
|
};
|
||||||
|
}
|
||||||
|
change(page)
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, { icon: 2 })
|
layer.msg(res.msg, { icon: 2 })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const showLine = ref(false)
|
|
||||||
const selectedKey = ref('')
|
|
||||||
const selectedNode = ref({
|
const selectedNode = ref({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: ''
|
name: ''
|
||||||
})
|
})
|
||||||
const isFold = ref(false)
|
const isFold = ref(false)
|
||||||
const searchQuery = ref({
|
|
||||||
userAccount: '',
|
|
||||||
userName: '',
|
|
||||||
sex: ''
|
|
||||||
})
|
|
||||||
function toReset() {
|
|
||||||
searchQuery.value = {
|
|
||||||
userAccount: '',
|
|
||||||
userName: '',
|
|
||||||
sex: ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function handleClick(node: any) {
|
function handleClick(node: any) {
|
||||||
selectedNode.value = JSON.parse(JSON.stringify(node))
|
selectedNode.value = JSON.parse(JSON.stringify(node))
|
||||||
page.current = selectedNode.value.id
|
leftId.value = selectedNode.value.id
|
||||||
change(page)
|
|
||||||
}
|
|
||||||
function toAdd() {
|
|
||||||
visible22.value = true
|
|
||||||
}
|
|
||||||
function toEdit() {
|
|
||||||
model22.value = {
|
|
||||||
organization: '1',
|
|
||||||
name: '研发部',
|
|
||||||
fullName: 'xxxx公司-研发部',
|
|
||||||
code: '001',
|
|
||||||
type: '1',
|
|
||||||
sort: 1,
|
|
||||||
remark: '备注'
|
|
||||||
}
|
|
||||||
visible22.value = true
|
|
||||||
}
|
|
||||||
function toDelete() {
|
|
||||||
if (selectedKey.value == '') {
|
|
||||||
layer.msg('您未选择组织机构,请先选择要删除的组织机构', {
|
|
||||||
icon: 3,
|
|
||||||
time: 2000
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
layer.confirm(
|
|
||||||
'您将删除所选中的组织机构 [ ' + selectedNode.value.title + ' ] ?',
|
|
||||||
{
|
|
||||||
title: '提示',
|
|
||||||
btn: [
|
|
||||||
{
|
|
||||||
text: '确定',
|
|
||||||
callback: (id: any) => {
|
|
||||||
layer.msg('您已成功删除')
|
|
||||||
layer.close(id)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '取消',
|
|
||||||
callback: (id: any) => {
|
|
||||||
layer.msg('您已取消操作')
|
|
||||||
layer.close(id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function toSearch() {
|
|
||||||
page.current = 1
|
page.current = 1
|
||||||
change(page)
|
change(page)
|
||||||
}
|
}
|
||||||
@ -167,102 +117,58 @@ const loading = ref(false)
|
|||||||
const selectedKeys = ref()
|
const selectedKeys = ref()
|
||||||
const page = reactive({ current: 1, limit: 10, total: 100 })
|
const page = reactive({ current: 1, limit: 10, total: 100 })
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{ title: '选项', width: '55px', type: 'checkbox', fixed: 'left' },
|
{ title: '所属科室', width: '120px', key: 'department', align: 'center' },
|
||||||
{ title: '编号', width: '80px', key: 'id', fixed: 'left' },
|
{ title: '级别名称', width: '120px', key: 'levelName', align: 'center' },
|
||||||
{ title: '所属科室', width: '120px', key: 'department' },
|
{ title: '名额', width: '80px', key: 'quota', align: 'center' },
|
||||||
{ title: '级别名称', width: '120px', key: 'levelName' },
|
{ title: '最高评分', width: '100px', key: 'maxScore', align: 'center' },
|
||||||
{ title: '名额', width: '80px', key: 'quota' },
|
{ title: '最低评分', width: '100px', key: 'minScore', align: 'center' },
|
||||||
{ title: '最高评分', width: '100px', key: 'maxScore' },
|
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
width: '150px',
|
width: '150px',
|
||||||
customSlot: 'operator',
|
customSlot: 'operator',
|
||||||
key: 'operator',
|
key: 'operator',
|
||||||
fixed: 'right'
|
fixed: 'right',
|
||||||
|
align: 'center'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
const change = (page: any) => {
|
const change = (page: any) => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
setTimeout(() => {
|
|
||||||
dataSource.value = loadDataSource(page.current, page.limit)
|
// 准备请求参数
|
||||||
loading.value = false
|
const params = {
|
||||||
}, 1000)
|
page: page.current,
|
||||||
|
limit: page.limit,
|
||||||
|
group_id: leftId.value
|
||||||
|
};
|
||||||
|
|
||||||
|
// 调用API获取数据
|
||||||
|
getEvaluationlevelData(params).then(res => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
// 映射API返回数据到组件所需格式
|
||||||
|
dataSource.value = res.data.data.map((item: any) => ({
|
||||||
|
id: item.id,
|
||||||
|
department: selectedNode.value.name || '',
|
||||||
|
levelName: item.level,
|
||||||
|
quota: Number(item.minge),
|
||||||
|
maxScore: Number(item.highest_score),
|
||||||
|
minScore: Number(item.lowest_score),
|
||||||
|
status: true // 假设默认状态为true,实际应根据API返回值调整
|
||||||
|
}));
|
||||||
|
page.total = res.data.count || 0;
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg || '获取数据失败', { icon: 2 });
|
||||||
|
dataSource.value = [];
|
||||||
|
}
|
||||||
|
loading.value = false;
|
||||||
|
}).catch(() => {
|
||||||
|
loading.value = false;
|
||||||
|
dataSource.value = [];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const sortChange = (key: any, sort: number) => {
|
const sortChange = (key: any, sort: number) => {
|
||||||
layer.msg(`字段${key} - 排序${sort}, 你可以利用 sort-change 实现服务端排序`)
|
layer.msg(`字段${key} - 排序${sort}, 你可以利用 sort-change 实现服务端排序`)
|
||||||
}
|
}
|
||||||
const dataSource = ref([
|
const dataSource = ref([])
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
department: '呼吸内科',
|
|
||||||
levelName: 'A级',
|
|
||||||
quota: 3,
|
|
||||||
maxScore: 95
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '2',
|
|
||||||
department: '呼吸内科',
|
|
||||||
levelName: 'B级',
|
|
||||||
quota: 5,
|
|
||||||
maxScore: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '3',
|
|
||||||
department: '心血管内科',
|
|
||||||
levelName: 'A级',
|
|
||||||
quota: 2,
|
|
||||||
maxScore: 95
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '4',
|
|
||||||
department: '心血管内科',
|
|
||||||
levelName: 'B级',
|
|
||||||
quota: 4,
|
|
||||||
maxScore: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '5',
|
|
||||||
department: '消化内科',
|
|
||||||
levelName: 'A级',
|
|
||||||
quota: 3,
|
|
||||||
maxScore: 95
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '6',
|
|
||||||
department: '消化内科',
|
|
||||||
levelName: 'B级',
|
|
||||||
quota: 5,
|
|
||||||
maxScore: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '7',
|
|
||||||
department: '普通外科',
|
|
||||||
levelName: 'A级',
|
|
||||||
quota: 2,
|
|
||||||
maxScore: 95
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '8',
|
|
||||||
department: '普通外科',
|
|
||||||
levelName: 'B级',
|
|
||||||
quota: 4,
|
|
||||||
maxScore: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '9',
|
|
||||||
department: '骨科',
|
|
||||||
levelName: 'A级',
|
|
||||||
quota: 2,
|
|
||||||
maxScore: 95
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '10',
|
|
||||||
department: '骨科',
|
|
||||||
levelName: 'B级',
|
|
||||||
quota: 3,
|
|
||||||
maxScore: 90
|
|
||||||
}
|
|
||||||
])
|
|
||||||
const changeStatus = (isChecked: boolean, row: any) => {
|
const changeStatus = (isChecked: boolean, row: any) => {
|
||||||
dataSource.value.forEach((item) => {
|
dataSource.value.forEach((item) => {
|
||||||
if (item.id === row.id) {
|
if (item.id === row.id) {
|
||||||
@ -272,30 +178,13 @@ const changeStatus = (isChecked: boolean, row: any) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const remove = () => {
|
|
||||||
layer.msg(selectedKeys.value, { area: '50%' })
|
|
||||||
}
|
|
||||||
const loadDataSource = (page: number, pageSize: number) => {
|
|
||||||
var response = []
|
|
||||||
var startIndex = (page - 1) * pageSize + 1
|
|
||||||
var endIndex = page * pageSize
|
|
||||||
const levels = ['A级', 'B级', 'C级']
|
|
||||||
for (var i = startIndex; i <= endIndex; i++) {
|
|
||||||
response.push({
|
|
||||||
id: `${i}`,
|
|
||||||
department: selectedNode.value.title || '呼吸内科',
|
|
||||||
levelName: levels[i % 3],
|
|
||||||
quota: Math.floor(Math.random() * 5) + 1, // 1-5的随机数
|
|
||||||
maxScore: 90 + (i % 3) * 5 // 90, 95, 100循环
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return response
|
|
||||||
}
|
|
||||||
const model11 = ref({
|
const model11 = ref({
|
||||||
department: '',
|
department: '',
|
||||||
levelName: '',
|
levelName: '',
|
||||||
quota: 0,
|
quota: 0,
|
||||||
maxScore: 0
|
maxScore: 0,
|
||||||
|
minScore: 0,
|
||||||
|
status: true
|
||||||
})
|
})
|
||||||
const layFormRef11 = ref()
|
const layFormRef11 = ref()
|
||||||
const visible11 = ref(false)
|
const visible11 = ref(false)
|
||||||
@ -310,77 +199,62 @@ const changeVisible11 = (text: any, row: any) => {
|
|||||||
department: '',
|
department: '',
|
||||||
levelName: '',
|
levelName: '',
|
||||||
quota: 0,
|
quota: 0,
|
||||||
maxScore: 0
|
maxScore: 0,
|
||||||
|
minScore: 0,
|
||||||
|
status: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
visible11.value = !visible11.value
|
visible11.value = !visible11.value
|
||||||
}
|
}
|
||||||
const submit11 = function () {
|
|
||||||
layFormRef11.value.validate((isValidate: any, model: any, errors: any) => {
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
title: '表单提交结果',
|
|
||||||
content: `<div style="padding: 10px"><p>是否通过 : ${isValidate}</p> <p>表单数据 : ${JSON.stringify(
|
|
||||||
model
|
|
||||||
)} </p> <p>错误信息 : ${JSON.stringify(errors)}</p></div>`,
|
|
||||||
shade: false,
|
|
||||||
isHtmlFragment: true,
|
|
||||||
btn: [
|
|
||||||
{
|
|
||||||
text: '确认',
|
|
||||||
callback(index: any) {
|
|
||||||
layer.close(index)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
area: '500px'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 清除校验
|
|
||||||
const clearValidate11 = function () {
|
|
||||||
layFormRef11.value.clearValidate()
|
|
||||||
}
|
|
||||||
// 重置表单
|
|
||||||
const reset11 = function () {
|
|
||||||
layFormRef11.value.reset()
|
|
||||||
}
|
|
||||||
function toRemove() {
|
|
||||||
if (selectedKeys.value.length == 0) {
|
|
||||||
layer.msg('您未选择数据,请先选择要删除的数据', { icon: 3, time: 2000 })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
layer.confirm('您将删除所有选中的数据?', {
|
|
||||||
title: '提示',
|
|
||||||
btn: [
|
|
||||||
{
|
|
||||||
text: '确定',
|
|
||||||
callback: (id: any) => {
|
|
||||||
layer.msg('您已成功删除')
|
|
||||||
layer.close(id)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '取消',
|
|
||||||
callback: (id: any) => {
|
|
||||||
layer.msg('您已取消操作')
|
|
||||||
layer.close(id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
}
|
|
||||||
function toSubmit() {
|
function toSubmit() {
|
||||||
layer.msg('保存成功!', { icon: 1, time: 1000 })
|
layFormRef11.value.validate((isValidate: boolean, model: any) => {
|
||||||
visible11.value = false
|
if (!isValidate) {
|
||||||
visible22.value = false
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 准备提交的数据,根据数据库字段进行映射
|
||||||
|
const submitData = {
|
||||||
|
id: model11.value.id || '',
|
||||||
|
group_id: leftId.value,
|
||||||
|
level: model11.value.levelName,
|
||||||
|
minge: model11.value.quota,
|
||||||
|
highest_score: model11.value.maxScore,
|
||||||
|
lowest_score: model11.value.minScore
|
||||||
|
};
|
||||||
|
|
||||||
|
// 根据操作类型调用不同API
|
||||||
|
const apiFunction = title.value === '新增'
|
||||||
|
? getEvaluationlevelCreate
|
||||||
|
: getEvaluationlevelUpdate;
|
||||||
|
|
||||||
|
apiFunction(submitData).then(res => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
layer.msg('保存成功!', { icon: 1, time: 1000 });
|
||||||
|
visible11.value = false;
|
||||||
|
// 刷新数据
|
||||||
|
change(page);
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg || '操作失败', { icon: 2 });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
function toCancel() {
|
function toCancel() {
|
||||||
visible11.value = false
|
visible11.value = false
|
||||||
visible22.value = false
|
visible22.value = false
|
||||||
}
|
}
|
||||||
function confirm() {
|
function confirm(id) {
|
||||||
layer.msg('您已成功删除')
|
// 获取当前选中行的ID
|
||||||
|
getEvaluationlevelDelete({ id }).then(res => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
layer.msg('您已成功删除', { icon: 1 });
|
||||||
|
// 刷新数据
|
||||||
|
change(page);
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg || '删除失败', { icon: 2 });
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
function cancel() {
|
function cancel() {
|
||||||
layer.msg('您已取消操作')
|
layer.msg('您已取消操作')
|
||||||
@ -398,6 +272,19 @@ const model22 = ref({
|
|||||||
const layFormRef22 = ref()
|
const layFormRef22 = ref()
|
||||||
const visible22 = ref(false)
|
const visible22 = ref(false)
|
||||||
const title22 = ref('新建')
|
const title22 = ref('新建')
|
||||||
|
|
||||||
|
const openNew = () => {
|
||||||
|
model11.value = {
|
||||||
|
department: selectedNode.value.name || data.value?.[0]?.name || '',
|
||||||
|
levelName: '',
|
||||||
|
quota: 0,
|
||||||
|
maxScore: 0,
|
||||||
|
minScore: 0,
|
||||||
|
status: true
|
||||||
|
}
|
||||||
|
title.value = '新增'
|
||||||
|
visible11.value = true
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<lay-card>
|
<lay-card>
|
||||||
<div style="padding: 10px">
|
<div style="padding: 10px">
|
||||||
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">考评时间列表</span>
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">考评时间列表</span>
|
||||||
<lay-button size="sm" border="green" @click="addShowMsd()">新增</lay-button>
|
<lay-button size="sm" type="primary" @click="addShowMsd()">新增</lay-button>
|
||||||
</div>
|
</div>
|
||||||
<lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6"
|
<lay-table size="lg" ref="tableRef6" children-column-name="children" :columns="columns6"
|
||||||
:data-source="dataSource6">
|
:data-source="dataSource6">
|
||||||
@ -314,13 +314,15 @@ const columns6 = [
|
|||||||
{
|
{
|
||||||
title: "考评标题",
|
title: "考评标题",
|
||||||
width: "150px",
|
width: "150px",
|
||||||
key: "title"
|
key: "title",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "考评类型",
|
title: "考评类型",
|
||||||
width: "90px",
|
width: "90px",
|
||||||
customSlot: 'evaluation_type',
|
customSlot: 'evaluation_type',
|
||||||
key: "evaluation_type"
|
key: "evaluation_type",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// title: "考评开始类型",
|
// title: "考评开始类型",
|
||||||
@ -338,17 +340,19 @@ const columns6 = [
|
|||||||
width: "100px",
|
width: "100px",
|
||||||
key: "rule_description",
|
key: "rule_description",
|
||||||
ellipsisTooltip: true,
|
ellipsisTooltip: true,
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "考评开始时间",
|
title: "考评开始时间",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "start_time"
|
key: "start_time",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "考评结束时间",
|
title: "考评结束时间",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "end_time",
|
key: "end_time",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -62,12 +62,12 @@
|
|||||||
</lay-card>
|
</lay-card>
|
||||||
<lay-table :page="page" @change="handlePageChange" height="600px" :columns="columns" :loading="loading" :data-source="dataSource">
|
<lay-table :page="page" @change="handlePageChange" height="600px" :columns="columns" :loading="loading" :data-source="dataSource">
|
||||||
<template v-slot:status="{ data }">
|
<template v-slot:status="{ data }">
|
||||||
<span v-if="data.status == 1" style="color: #1E9FFF">待审核</span>
|
<lay-tag v-if="data.status == 1" type="warm" size="sm">待审核</lay-tag>
|
||||||
<span v-if="data.status == 2" style="color: #009688">审核通过</span>
|
<lay-tag v-if="data.status == 2" type="normal" size="sm">已通过</lay-tag>
|
||||||
<span v-if="data.status == 3" style="color: #009688">已驳回</span>
|
<lay-tag v-if="data.status == 3" type="danger" size="sm">已驳回</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:assessment_type="{ data }">
|
<template v-slot:assessment_type="{ data }">
|
||||||
<lay-tag :type="data.assessment_type == 1 ? 'primary' : 'danger'">
|
<lay-tag :type="data.assessment_type == 1 ? 'primary' : 'danger'" size="sm">
|
||||||
{{ data.assessment_type == 1 ? '加分' : '减分' }}
|
{{ data.assessment_type == 1 ? '加分' : '减分' }}
|
||||||
</lay-tag>
|
</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
|
@ -36,12 +36,12 @@
|
|||||||
</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 }">
|
||||||
<span v-if="data.status == 1" style="color: #1E9FFF">待审核</span>
|
<lay-tag v-if="data.status == 1" type="primary" size="sm">待审核</lay-tag>
|
||||||
<span v-if="data.status == 2" style="color: #009688">审核通过</span>
|
<lay-tag v-if="data.status == 2" type="success" size="sm">审核通过</lay-tag>
|
||||||
<span v-if="data.status == 3" style="color: #009688">已驳回</span>
|
<lay-tag v-if="data.status == 3" type="danger" size="sm">已驳回</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:assessment_type="{ data }">
|
<template v-slot:assessment_type="{ data }">
|
||||||
<lay-tag :type="data.assessment_type == 1 ? 'primary' : 'danger'">
|
<lay-tag :type="data.assessment_type == 1 ? 'primary' : 'danger'" size="sm">
|
||||||
{{ data.assessment_type == 1 ? '加分' : '减分' }}
|
{{ data.assessment_type == 1 ? '加分' : '减分' }}
|
||||||
</lay-tag>
|
</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<lay-card>
|
<lay-card>
|
||||||
<div style="padding: 10px">
|
<div style="padding: 10px">
|
||||||
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">党风廉政教育</span>
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">党风廉政教育</span>
|
||||||
<lay-button v-if="userStore.userInfo.level == 4" 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" @change="changePage" :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 }">
|
||||||
@ -359,12 +359,14 @@
|
|||||||
{
|
{
|
||||||
title: "内容标题",
|
title: "内容标题",
|
||||||
width: "180px",
|
width: "180px",
|
||||||
key: "party_style_name"
|
key: "party_style_name",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "发布时间",
|
title: "发布时间",
|
||||||
width: "180px",
|
width: "180px",
|
||||||
key: "createtime"
|
key: "createtime",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
184
src/views/education/list.vue
Normal file
184
src/views/education/list.vue
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
<template>
|
||||||
|
<lay-container style="padding: 20px">
|
||||||
|
<lay-card>
|
||||||
|
<div style="padding: 10px">
|
||||||
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">党风廉政教育</span>
|
||||||
|
</div>
|
||||||
|
<lay-table :page="page" height="600px" size="lg" @change="changePage" :columns="columns"
|
||||||
|
:data-source="dataSource">
|
||||||
|
<!-- <template v-slot:content="{ data }">
|
||||||
|
<div v-html="data.content"></div>
|
||||||
|
</template> -->
|
||||||
|
<template v-slot:status="{ data }">
|
||||||
|
<span v-if="data.status == 1">已发布</span>
|
||||||
|
<span v-if="data.status == 0">已隐藏</span>
|
||||||
|
</template>
|
||||||
|
<template v-slot:operator="{ data }">
|
||||||
|
<lay-space size="lg">
|
||||||
|
<span style="color: #00A394;cursor: pointer" @click="viewDetail(data)">查看学习</span>
|
||||||
|
</lay-space>
|
||||||
|
</template>
|
||||||
|
</lay-table>
|
||||||
|
</lay-card>
|
||||||
|
<lay-layer v-model="detailShow" title="党风廉政教育详情" :type="4" :shade="true" :area="['650px', '100%']"
|
||||||
|
:btn="detailButton">
|
||||||
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
|
<h2 style="text-align: center; margin-bottom: 20px;">{{ detailData.party_style_name }}</h2>
|
||||||
|
<div class="detail-content" v-html="detailData.party_style_countent"></div>
|
||||||
|
</lay-container>
|
||||||
|
</lay-layer>
|
||||||
|
</lay-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {
|
||||||
|
educationList,
|
||||||
|
} from '../../api/module/home'
|
||||||
|
import { ref, onMounted, reactive, watch, toRaw } from 'vue'
|
||||||
|
import { layer } from '@layui/layer-vue'
|
||||||
|
import { useUserStore } from '@/store/user'
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
// 分页变化
|
||||||
|
const changePage = (ppc: { current: number; limit: number }) => {
|
||||||
|
page.current = ppc.current;
|
||||||
|
page.limit = ppc.limit;
|
||||||
|
getNoticeList();
|
||||||
|
}
|
||||||
|
// 列表数据
|
||||||
|
const dataSource = ref([]);
|
||||||
|
|
||||||
|
|
||||||
|
// 定义数据类型接口
|
||||||
|
interface EducationData {
|
||||||
|
id: number;
|
||||||
|
party_style_name: string;
|
||||||
|
party_style_countent: string;
|
||||||
|
status?: number; // 添加可选的状态字段,如果后端支持
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改分页参数定义
|
||||||
|
const page = reactive({
|
||||||
|
current: 1,
|
||||||
|
limit: 10,
|
||||||
|
total: 1
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getNoticeList()
|
||||||
|
|
||||||
|
// Wait for editor to be mounted and initialized
|
||||||
|
// nextTick(() => {
|
||||||
|
// // Add null check before accessing editor
|
||||||
|
// if (editorRef.value && editorRef.value.getQuill()) {
|
||||||
|
// // Initialize title tooltips
|
||||||
|
// initTitle()
|
||||||
|
|
||||||
|
// // Add paste event listener
|
||||||
|
// const editor = editorRef.value.getQuill()
|
||||||
|
// editor.root.addEventListener('paste', customPaste, false)
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const getNoticeList = () => {
|
||||||
|
educationList({ page: page.current, size: page.limit }).then((res: any) => {
|
||||||
|
if (res.code == 1) {
|
||||||
|
dataSource.value = res.data.data;
|
||||||
|
page.total = res.data.count;
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: "内容标题",
|
||||||
|
width: "180px",
|
||||||
|
key: "party_style_name",
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "发布时间",
|
||||||
|
width: "180px",
|
||||||
|
key: "createtime",
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '120px',
|
||||||
|
customSlot: 'operator',
|
||||||
|
key: 'operator',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// 详情查看相关
|
||||||
|
const detailShow = ref(false);
|
||||||
|
const detailData = reactive<EducationData>({
|
||||||
|
id: 0,
|
||||||
|
party_style_name: '',
|
||||||
|
party_style_countent: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
const viewDetail = (data: EducationData) => {
|
||||||
|
detailShow.value = true;
|
||||||
|
detailData.id = data.id;
|
||||||
|
detailData.party_style_name = data.party_style_name;
|
||||||
|
detailData.party_style_countent = data.party_style_countent;
|
||||||
|
}
|
||||||
|
|
||||||
|
const detailButton = ref([
|
||||||
|
{
|
||||||
|
text: "关闭",
|
||||||
|
callback: () => {
|
||||||
|
detailShow.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
:deep(.w-e-text-container) {
|
||||||
|
min-height: 400px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.w-e-toolbar) {
|
||||||
|
border: 1px solid #ddd !important;
|
||||||
|
border-bottom: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.w-e-text-container) {
|
||||||
|
border: 1px solid #ddd !important;
|
||||||
|
border-top: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ql-editor) {
|
||||||
|
height: 300px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.layui-input-block) {
|
||||||
|
max-width: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.detail-content) {
|
||||||
|
padding: 10px;
|
||||||
|
max-height: calc(100vh - 200px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 添加视频自适应样式 */
|
||||||
|
:deep(.detail-content video) {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.detail-content iframe) {
|
||||||
|
max-width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
aspect-ratio: 16 / 9;
|
||||||
|
}
|
||||||
|
</style>
|
@ -7,13 +7,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<lay-table @change="changePage" :page="page" size="lg" ref="tableRef6" children-column-name="children"
|
<lay-table @change="changePage" :page="page" size="lg" ref="tableRef6" children-column-name="children"
|
||||||
:columns="columns6" :data-source="dataSource6">
|
:columns="columns6" :data-source="dataSource6">
|
||||||
<template v-slot:status="{ data }">
|
|
||||||
<span v-if="data.status == '1'">启用</span>
|
|
||||||
<span v-if="data.status == '0'">禁用</span>
|
|
||||||
</template>
|
|
||||||
<template v-slot:weigh="{ data }">
|
|
||||||
<lay-input v-model="data.weigh" type="number" @input="weighUpdate(data)" />
|
|
||||||
</template>
|
|
||||||
<template v-slot:operator="{ data }">
|
<template v-slot:operator="{ data }">
|
||||||
<lay-space size="lg">
|
<lay-space size="lg">
|
||||||
<span style="color: #00A394;cursor: pointer" @click="addShowMsd(data, data.id)">新增题目</span>
|
<span style="color: #00A394;cursor: pointer" @click="addShowMsd(data, data.id)">新增题目</span>
|
||||||
@ -62,25 +55,24 @@
|
|||||||
<lay-form-item :label="op.name" v-for="(op, opi) in item.option" :key="opi" v-if="item.type != 3">
|
<lay-form-item :label="op.name" v-for="(op, opi) in item.option" :key="opi" v-if="item.type != 3">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;">
|
||||||
<lay-input v-model="op.val" placeholder="请输入选项答案"></lay-input>
|
<lay-input v-model="op.val" placeholder="请输入选项答案"></lay-input>
|
||||||
<lay-button type="primary" size="sm" @click="delOptionItem(index, opi)"><lay-icon
|
<lay-button style="margin-left: 10px" type="primary" size="sm" @click="delOptionItem(index, opi)"><lay-icon
|
||||||
type="layui-icon-delete"></lay-icon></lay-button>
|
type="layui-icon-delete"></lay-icon></lay-button>
|
||||||
</div>
|
</div>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<div style="text-align: center" v-if="item.type != 3">
|
<div style="text-align: center" v-if="item.type != 3">
|
||||||
<lay-button @click="addOption(index)" type="primary">添加一个选项</lay-button>
|
<lay-button @click="addOption(index)" type="primary" size="sm">添加一个选项</lay-button>
|
||||||
</div>
|
</div>
|
||||||
<div style="position: absolute; right: 20px; top: 20px">
|
<div style="position: absolute; right: 20px; top: 20px">
|
||||||
<lay-button @click="delOptionTop(index)" type="danger" size="sm">删除题目</lay-button>
|
<lay-button @click="delOptionTop(index)" type="danger" size="sm">删除题目</lay-button>
|
||||||
</div>
|
</div>
|
||||||
</lay-card>
|
</lay-card>
|
||||||
<div style="text-align: center; margin-top: 30px">
|
<div style="text-align: center; margin-top: 30px">
|
||||||
<lay-button @click="addQuestionnaire()" type="warm">添加一个题目</lay-button>
|
<lay-button @click="addQuestionnaire()" type="warm" size="sm">添加一个题目</lay-button>
|
||||||
</div>
|
</div>
|
||||||
</lay-form>
|
</lay-form>
|
||||||
</lay-container>
|
</lay-container>
|
||||||
</lay-layer>
|
</lay-layer>
|
||||||
<lay-layer header="编辑题目" v-model="questionnaireUpdateMode" :type="4" :shade="true" :area="['800px', '100%']"
|
<lay-layer title="编辑题目" v-model="questionnaireUpdateMode" :type="4" :shade="true" :area="['800px', '100%']">
|
||||||
:btn="questionnaireButtonEdit">
|
|
||||||
<lay-form>
|
<lay-form>
|
||||||
<lay-card v-for="(item, index) in questionnaire" style="margin-bottom: 10px;position: relative;">
|
<lay-card v-for="(item, index) in questionnaire" style="margin-bottom: 10px;position: relative;">
|
||||||
<lay-form-item label="类型">
|
<lay-form-item label="类型">
|
||||||
@ -99,12 +91,12 @@
|
|||||||
<lay-form-item v-for="(op, opi) in item.option" :label="op.name" v-if="item.type != 3">
|
<lay-form-item v-for="(op, opi) in item.option" :label="op.name" v-if="item.type != 3">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;">
|
||||||
<lay-input v-model="op.val" placeholder="请输入选项答案"></lay-input>
|
<lay-input v-model="op.val" placeholder="请输入选项答案"></lay-input>
|
||||||
<lay-button type="primary" size="sm" @click="delUpdateOptionItem(index, opi)"><lay-icon
|
<lay-button style="margin-left: 10px" type="primary" size="sm" @click="delUpdateOptionItem(index, opi)"><lay-icon
|
||||||
type="layui-icon-delete"></lay-icon></lay-button>
|
type="layui-icon-delete"></lay-icon></lay-button>
|
||||||
</div>
|
</div>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<div style="text-align: center" v-if="item.type != 3">
|
<div style="text-align: center" v-if="item.type != 3">
|
||||||
<lay-button @click="addOption(index)" type="warm">添加一个选项</lay-button>
|
<lay-button @click="addUpdateOption(index)" type="warm" size="sm">添加一个选项</lay-button>
|
||||||
</div>
|
</div>
|
||||||
<div style="position:absolute;right: 20px;top: 20px">
|
<div style="position:absolute;right: 20px;top: 20px">
|
||||||
<lay-popconfirm content="确认删除吗" @confirm="delUpdateOptionTop(index, item)">
|
<lay-popconfirm content="确认删除吗" @confirm="delUpdateOptionTop(index, item)">
|
||||||
@ -112,7 +104,7 @@
|
|||||||
</lay-popconfirm>
|
</lay-popconfirm>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center;margin-top: 20px">
|
<div style="text-align: center;margin-top: 20px">
|
||||||
<lay-button @click="updateOption(item)" type="primary">保存</lay-button>
|
<lay-button @click="updateOption(item)" type="primary" size="sm">保存</lay-button>
|
||||||
</div>
|
</div>
|
||||||
</lay-card>
|
</lay-card>
|
||||||
</lay-form>
|
</lay-form>
|
||||||
@ -131,7 +123,9 @@ import {
|
|||||||
getQuestionnaireInfoEdit,
|
getQuestionnaireInfoEdit,
|
||||||
getQuestionnaireInfoFind,
|
getQuestionnaireInfoFind,
|
||||||
getQuestionnaireDelete,
|
getQuestionnaireDelete,
|
||||||
getQuestionnaireAdd
|
getQuestionnaireAdd,
|
||||||
|
getQuestionnaireEdit,
|
||||||
|
getQuestionnaireInfoDelete
|
||||||
} from '../../api/module/home' // 确保 API 路径正确
|
} from '../../api/module/home' // 确保 API 路径正确
|
||||||
import { ref, watch, onMounted, reactive } from 'vue'
|
import { ref, watch, onMounted, reactive } from 'vue'
|
||||||
import { layer } from '@layui/layer-vue'
|
import { layer } from '@layui/layer-vue'
|
||||||
@ -163,8 +157,8 @@ const initQuestionItem = () => {
|
|||||||
wight: 0,
|
wight: 0,
|
||||||
title: "",
|
title: "",
|
||||||
option: [
|
option: [
|
||||||
{ name: "选项A", val: "" },
|
{ name: "A", val: "" },
|
||||||
{ name: "选项B", val: "" }
|
{ name: "B", val: "" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -196,7 +190,16 @@ const addOption = (index) => {
|
|||||||
val: ""
|
val: ""
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const addUpdateOption = (index) => {
|
||||||
|
const optionLength = questionnaire.value[index].option.length
|
||||||
|
const lastOption = questionnaire.value[index].option[optionLength - 1]
|
||||||
|
const lastChar = lastOption.name.charAt(lastOption.name.length - 1)
|
||||||
|
const nextChar = String.fromCharCode(lastChar.charCodeAt(0) + 1)
|
||||||
|
questionnaire.value[index].option.push({
|
||||||
|
name: `${nextChar}`,
|
||||||
|
val: ""
|
||||||
|
})
|
||||||
|
}
|
||||||
// 删除选项
|
// 删除选项
|
||||||
const delOptionItem = (index, opi) => {
|
const delOptionItem = (index, opi) => {
|
||||||
if (questionnaireData.value[index].option.length <= 2) {
|
if (questionnaireData.value[index].option.length <= 2) {
|
||||||
@ -210,14 +213,6 @@ const delOptionItem = (index, opi) => {
|
|||||||
const delOptionTop = (index) => {
|
const delOptionTop = (index) => {
|
||||||
questionnaireData.value.splice(index, 1)
|
questionnaireData.value.splice(index, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 打开新增题目弹窗
|
|
||||||
const openQuestionnaireAdd = (data) => {
|
|
||||||
questionnaireAddMode.value = true
|
|
||||||
currentQuestionnaireId.value = data.id
|
|
||||||
questionnaireData.value = [initQuestionItem()]
|
|
||||||
}
|
|
||||||
|
|
||||||
const delUpdateOptionTop = (index, item) => {
|
const delUpdateOptionTop = (index, item) => {
|
||||||
console.log(item);
|
console.log(item);
|
||||||
if (questionnaire.value.length <= 1) {
|
if (questionnaire.value.length <= 1) {
|
||||||
@ -262,7 +257,7 @@ const submitQuestionnaire = async () => {
|
|||||||
try {
|
try {
|
||||||
//这里替换为实际的API调用
|
//这里替换为实际的API调用
|
||||||
const res = await getQuestionnaireAdd({
|
const res = await getQuestionnaireAdd({
|
||||||
id: currentQuestionnaireId.value,
|
questionnaire_id: currentQuestionnaireId.value,
|
||||||
topic: jsonString
|
topic: jsonString
|
||||||
})
|
})
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
@ -277,7 +272,16 @@ const submitQuestionnaire = async () => {
|
|||||||
layer.msg('保存失败', { icon: 2 })
|
layer.msg('保存失败', { icon: 2 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const delUpdateOptionItem = (index, opIndex) => {
|
||||||
|
if (questionnaire.value[index].option.length <= 2) {
|
||||||
|
layer.msg('至少保留两个选项', { icon: 2 });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
questionnaire.value[index].option.splice(opIndex, 1);
|
||||||
|
questionnaire.value[index].option.forEach((item, index) => {
|
||||||
|
item.name = String.fromCharCode(65 + index);
|
||||||
|
});
|
||||||
|
}
|
||||||
// 问卷题目弹窗按钮
|
// 问卷题目弹窗按钮
|
||||||
const questionnaireButton = ref([
|
const questionnaireButton = ref([
|
||||||
{
|
{
|
||||||
@ -294,26 +298,27 @@ const questionnaireButton = ref([
|
|||||||
|
|
||||||
// 修改现有的addShowMsd方法,使其能够处理新增题目
|
// 修改现有的addShowMsd方法,使其能够处理新增题目
|
||||||
const addShowMsd = (data, pid) => {
|
const addShowMsd = (data, pid) => {
|
||||||
|
|
||||||
console.log(data);
|
console.log(data);
|
||||||
// 如果是新增题目
|
// 如果是新增题目
|
||||||
questionnaireAddMode.value = true;
|
questionnaireAddMode.value = true;
|
||||||
currentQuestionnaireId.value = data.id;
|
currentQuestionnaireId.value = data.id;
|
||||||
|
questionnaireData.value=[{
|
||||||
|
type: 1, title: '', wight: 0, option: [{ name: 'A', val: "" }, { name: 'B', val: "" }]
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
const columns6 = [
|
const columns6 = [
|
||||||
{
|
{
|
||||||
title: "问卷标题",
|
title: "问卷标题",
|
||||||
width: "200px",
|
width: "200px",
|
||||||
key: "title"
|
key: "title",
|
||||||
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "发布时间",
|
title: "发布时间",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
key: "releasetime"
|
key: "releasetime",
|
||||||
},
|
align: 'center'
|
||||||
{
|
|
||||||
title: "填写人数",
|
|
||||||
width: "300px",
|
|
||||||
key: "url"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
@ -365,16 +370,43 @@ const editShowMsd = (data) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const delShowMsd = async (data) => {
|
const delShowMsd = async (data) => {
|
||||||
var res = await menuDataDel({ id: data.id });
|
var res = await getQuestionnaireInfoDelete({ id: data.id });
|
||||||
console.log(res)
|
console.log(res)
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
layer.msg('删除成功!', { icon: 1 })
|
layer.msg('删除成功!', { icon: 1 })
|
||||||
getHierarchicalData();
|
getHierarchicalData()
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, { icon: 2 })
|
layer.msg(res.msg, { icon: 2 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const updateOption = (d) => {
|
||||||
|
var option = d.option;
|
||||||
|
console.log(d);
|
||||||
|
const transformedArray = [];
|
||||||
|
for (const key in option) {
|
||||||
|
transformedArray.push({
|
||||||
|
name: key,
|
||||||
|
val: option[key].name, // 这里的`key`1111是根据你的示例构建的,可以根据实际需求调整
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let jsonString = d;
|
||||||
|
getQuestionnaireEdit({
|
||||||
|
topic: JSON.stringify(jsonString),
|
||||||
|
id: d.id,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
if (res.code == 1) {
|
||||||
|
layer.msg('保存成功', { icon: 1 });
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 });
|
||||||
|
}
|
||||||
|
editShowQuestMsd(d.questionnaire_id);
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
console.log(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
const addButton = ref([
|
const addButton = ref([
|
||||||
{
|
{
|
||||||
text: "确认",
|
text: "确认",
|
||||||
|
258
src/views/education/question_list.vue
Normal file
258
src/views/education/question_list.vue
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
<template>
|
||||||
|
<lay-container style="padding: 20px">
|
||||||
|
<lay-card>
|
||||||
|
<div style="padding: 10px">
|
||||||
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">党风廉政教育</span>
|
||||||
|
</div>
|
||||||
|
<lay-table :page="page" height="650px" size="lg" @change="changePage" :columns="columns"
|
||||||
|
:data-source="dataSource">
|
||||||
|
<!-- <template v-slot:content="{ data }">
|
||||||
|
<div v-html="data.content"></div>
|
||||||
|
</template> -->
|
||||||
|
<template v-slot:type="{ data }">
|
||||||
|
<lay-tag v-if="data.type == '已填写'" color="#00A394" size="sm">已填写</lay-tag>
|
||||||
|
<lay-tag v-if="data.type == '未填写'" color="#FF5722" size="sm">未填写</lay-tag>
|
||||||
|
</template>
|
||||||
|
<template v-slot:operator="{ data }">
|
||||||
|
<lay-space size="lg">
|
||||||
|
<span style="color: #00A394;cursor: pointer" @click="viewDetail(data)">查看填写</span>
|
||||||
|
</lay-space>
|
||||||
|
</template>
|
||||||
|
</lay-table>
|
||||||
|
</lay-card>
|
||||||
|
<lay-layer v-model="detailShow" title="党风廉政教育问卷填写" :type="4" :shade="true" :area="['650px', '100%']"
|
||||||
|
:btn="addButton">
|
||||||
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
|
<lay-card>
|
||||||
|
<div v-for="(item, index) in questionnaireList" :key="index">
|
||||||
|
<!-- 多选题 -->
|
||||||
|
<div v-if="item.type == 2" style="margin-bottom: 20px;">
|
||||||
|
<div style="margin: 10px 0px;">{{ (index + 1) + '、' + item.title + '(多选题)' }}</div>
|
||||||
|
<lay-checkbox-group v-model="questionnaireList[index].topic">
|
||||||
|
<lay-checkbox size="lg" v-for="(op, opi) in item.option" :name="op.name" skin="primary"
|
||||||
|
:value="op.name">{{ op.name }}、{{ op.val }}</lay-checkbox>
|
||||||
|
</lay-checkbox-group>
|
||||||
|
</div>
|
||||||
|
<!-- 单选题 -->
|
||||||
|
<div v-if="item.type == 1" style="margin-bottom: 20px;">
|
||||||
|
<div style="margin: 10px 0px;">{{ (index + 1) + '、' + item.title + '(单选题)' }}</div>
|
||||||
|
<lay-radio-group name="action" v-model="questionnaireList[index].topic">
|
||||||
|
<lay-radio size="lg" v-for="(op, opi) in item.option" :value="op.name"> {{ op.name }}、{{
|
||||||
|
op.val
|
||||||
|
}}</lay-radio>
|
||||||
|
</lay-radio-group>
|
||||||
|
</div>
|
||||||
|
<!-- 问答题 -->
|
||||||
|
<div v-if="item.type == 3" style="margin-bottom: 20px;">
|
||||||
|
<div style="margin: 10px 0px;">{{ (index + 1) + '、' + item.title + '(问答题)' }}</div>
|
||||||
|
<lay-textarea v-model="questionnaireList[index].topic" placeholder="请填写答案"></lay-textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</lay-card>
|
||||||
|
</lay-container>
|
||||||
|
</lay-layer>
|
||||||
|
</lay-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {
|
||||||
|
educationList,
|
||||||
|
getQuestionnaireIndex,
|
||||||
|
getQuestionnaireInfoFind,
|
||||||
|
getQuestionnaireInfoEdit,
|
||||||
|
getQuestionnaireFill
|
||||||
|
} from '../../api/module/home'
|
||||||
|
import { ref, onMounted, reactive, watch, toRaw } from 'vue'
|
||||||
|
import { layer } from '@layui/layer-vue'
|
||||||
|
import { useUserStore } from '@/store/user'
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
const detailShow = ref(false);
|
||||||
|
|
||||||
|
// 添加问卷详情数据
|
||||||
|
const questionnaireList = ref([]);
|
||||||
|
|
||||||
|
// 添加接口定义
|
||||||
|
interface QuestionItem {
|
||||||
|
id: string | number;
|
||||||
|
title: string;
|
||||||
|
status: number;
|
||||||
|
releasetime: string;
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
const viewDetail = (data: QuestionItem) => {
|
||||||
|
detailShow.value = true;
|
||||||
|
getQuestionnaireInfoFind({ id: data.id }).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
if (res.code === 1) {
|
||||||
|
questionnaireList.value = res.data.map((item: any) => ({
|
||||||
|
...item,
|
||||||
|
topic: item.topic || ''
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
console.error(err);
|
||||||
|
layer.msg('网络错误,请稍后重试', { icon: 2 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页变化
|
||||||
|
const changePage = (ppc: { current: number; limit: number }) => {
|
||||||
|
page.current = ppc.current;
|
||||||
|
page.limit = ppc.limit;
|
||||||
|
getHierarchicalData();
|
||||||
|
}
|
||||||
|
// 列表数据
|
||||||
|
const dataSource = ref([]);
|
||||||
|
|
||||||
|
// 修改分页参数定义
|
||||||
|
const page = reactive({
|
||||||
|
current: 1,
|
||||||
|
limit: 10,
|
||||||
|
total: 1
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getHierarchicalData()
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const getHierarchicalData = () => {
|
||||||
|
getQuestionnaireIndex({ page: page.current, size: page.limit }).then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
if (res.code == 1) {
|
||||||
|
dataSource.value = res.data.data;
|
||||||
|
page.total = res.data.count;
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: "内容标题",
|
||||||
|
width: "180px",
|
||||||
|
key: "title",
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "发布时间",
|
||||||
|
width: "180px",
|
||||||
|
key: "releasetime",
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "状态",
|
||||||
|
width: "180px",
|
||||||
|
key: "type",
|
||||||
|
customSlot: 'type',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '120px',
|
||||||
|
customSlot: 'operator',
|
||||||
|
key: 'operator',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const addButton = ref([
|
||||||
|
{
|
||||||
|
text: "确认",
|
||||||
|
callback: async () => {
|
||||||
|
console.log(questionnaireList.value);
|
||||||
|
var key = questionnaireList.value.map((item, index) => {
|
||||||
|
if (!('topic' in item)) {
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
questionnaire_id: item.questionnaire_id,
|
||||||
|
topic_id: item.id,
|
||||||
|
option: Array.isArray(item.topic) ? item.topic.join(',') : item.topic,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for (var i = 0; i < key.length; i++) {
|
||||||
|
if (key[i] == '') {
|
||||||
|
layer.msg('请填写第[' + (i + 1) + ']个问题', { icon: 2 });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var key = JSON.stringify(key);
|
||||||
|
console.log(key);
|
||||||
|
getQuestionnaireFill({ option: key }).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
if (res.code == 1) {
|
||||||
|
layer.msg(res.msg);
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 });
|
||||||
|
}
|
||||||
|
detailShow.value = false;
|
||||||
|
getHierarchicalData();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "取消",
|
||||||
|
callback: () => {
|
||||||
|
detailShow.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
:deep(.w-e-text-container) {
|
||||||
|
min-height: 400px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.w-e-toolbar) {
|
||||||
|
border: 1px solid #ddd !important;
|
||||||
|
border-bottom: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.w-e-text-container) {
|
||||||
|
border: 1px solid #ddd !important;
|
||||||
|
border-top: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ql-editor) {
|
||||||
|
height: 300px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.layui-input-block) {
|
||||||
|
max-width: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.detail-content) {
|
||||||
|
padding: 10px;
|
||||||
|
max-height: calc(100vh - 200px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 添加视频自适应样式 */
|
||||||
|
:deep(.detail-content video) {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.detail-content iframe) {
|
||||||
|
max-width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
aspect-ratio: 16 / 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.layui-radio) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.layui-checkbox) {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -30,12 +30,12 @@
|
|||||||
style="width: 98%"></lay-input>
|
style="width: 98%"></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
</lay-col>
|
</lay-col>
|
||||||
<lay-col :md="5">
|
<!-- <lay-col :md="5">
|
||||||
<lay-form-item label="手机号" label-width="80px">
|
<lay-form-item label="手机号" label-width="80px">
|
||||||
<lay-input v-model="searchQuery.mobile" placeholder="请输入" :allow-clear="true"
|
<lay-input v-model="searchQuery.mobile" placeholder="请输入" :allow-clear="true"
|
||||||
style="width: 98%"></lay-input>
|
style="width: 98%"></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
</lay-col>
|
</lay-col> -->
|
||||||
<lay-col :md="5">
|
<lay-col :md="5">
|
||||||
<lay-form-item label-width="20">
|
<lay-form-item label-width="20">
|
||||||
<lay-button style="margin-left: 20px" type="normal" size="sm" @click="toSearch">
|
<lay-button style="margin-left: 20px" type="normal" size="sm" @click="toSearch">
|
||||||
@ -55,9 +55,8 @@
|
|||||||
<span v-if="row.gender == 2">女</span>
|
<span v-if="row.gender == 2">女</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<lay-button size="xs" border="green" border-style="dashed" @click="getInfo(row)">
|
<span style="color: #00A394;cursor: pointer"
|
||||||
员工档案
|
@click="getInfo(row)">员工档案</span>
|
||||||
</lay-button>
|
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</div>
|
</div>
|
||||||
@ -117,13 +116,11 @@ const data = ref([])
|
|||||||
const isFold = ref(false)
|
const isFold = ref(false)
|
||||||
const searchQuery = ref({
|
const searchQuery = ref({
|
||||||
nickname: '',
|
nickname: '',
|
||||||
mobile: '',
|
|
||||||
})
|
})
|
||||||
|
|
||||||
function toReset() {
|
function toReset() {
|
||||||
searchQuery.value = {
|
searchQuery.value = {
|
||||||
nickname: '',
|
nickname: '',
|
||||||
mobile: '',
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,7 +130,7 @@ function handleClick(node: any) {
|
|||||||
getUserList();
|
getUserList();
|
||||||
}
|
}
|
||||||
|
|
||||||
const page = reactive({ current: 1, limit: 10, total: 1 })
|
const page = reactive({ current: 1, limit: 15, total: 1 })
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{ title: '编号', width: '80px', key: 'id', align: 'center' },
|
{ title: '编号', width: '80px', key: 'id', align: 'center' },
|
||||||
{ title: '工号/帐号', width: '100px', key: 'code', align: 'center' },
|
{ title: '工号/帐号', width: '100px', key: 'code', align: 'center' },
|
||||||
@ -141,7 +138,7 @@ const columns = ref([
|
|||||||
{ title: '手机号', width: '120px', key: 'mobile', align: 'center' },
|
{ title: '手机号', width: '120px', key: 'mobile', align: 'center' },
|
||||||
{ title: '性别', width: '80px', key: 'gender', customSlot: 'gender', align: 'center' },
|
{ title: '性别', width: '80px', key: 'gender', customSlot: 'gender', align: 'center' },
|
||||||
{ title: '身份证号', width: '180px', key: 'member_code', align: 'center' },
|
{ title: '身份证号', width: '180px', key: 'member_code', align: 'center' },
|
||||||
{ title: '状态', width: '100px', key: 'status', customSlot: 'status', align: 'center' },
|
// { title: '状态', width: '100px', key: 'status', customSlot: 'status', align: 'center' },
|
||||||
{ title: '操作', width: '250px', customSlot: 'operator', key: 'operator', fixed: 'right', align: 'center' }
|
{ title: '操作', width: '250px', customSlot: 'operator', key: 'operator', fixed: 'right', align: 'center' }
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -51,11 +51,11 @@
|
|||||||
<div class="info-grid">
|
<div class="info-grid">
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<span class="label">科室:</span>
|
<span class="label">科室:</span>
|
||||||
<span class="value">{{ groupName || '暂无' }}</span>
|
<span class="value">{{ userInfo.gorup_name || '暂无' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<span class="label">党支部:</span>
|
<span class="label">党支部:</span>
|
||||||
<span class="value">{{ partyName || '暂无' }}</span>
|
<span class="value">{{ userInfo.party_name || '暂无' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<span class="label">岗位名称:</span>
|
<span class="label">岗位名称:</span>
|
||||||
@ -181,6 +181,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<template v-if="jiaList.length > 0">
|
||||||
<template v-for="item in jiaList">
|
<template v-for="item in jiaList">
|
||||||
<tr v-if="item.assessment_type == 1">
|
<tr v-if="item.assessment_type == 1">
|
||||||
<td>{{ item.score_value }}</td>
|
<td>{{ item.score_value }}</td>
|
||||||
@ -189,6 +190,12 @@
|
|||||||
<td>{{ item.createtime }}</td>
|
<td>{{ item.createtime }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<tr style="text-align: center;height: 100px;">
|
||||||
|
<td colspan="4">暂无加分情况</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -209,6 +216,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<template v-if="jiaList.length > 0">
|
||||||
<template v-for="item in jiaList">
|
<template v-for="item in jiaList">
|
||||||
<tr v-if="item.assessment_type == 2">
|
<tr v-if="item.assessment_type == 2">
|
||||||
<td>{{ item.score_value }}</td>
|
<td>{{ item.score_value }}</td>
|
||||||
@ -217,6 +225,12 @@
|
|||||||
<td>{{ item.createtime }}</td>
|
<td>{{ item.createtime }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<tr style="text-align: center;height: 100px;">
|
||||||
|
<td colspan="4">暂无扣分情况</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -67,9 +67,9 @@
|
|||||||
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
||||||
@change="change">
|
@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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<!-- <lay-tag v-if="row.scoringrecord_status == 4" type="danger">医院已评</lay-tag> -->
|
<!-- <lay-tag v-if="row.scoringrecord_status == 4" type="danger">医院已评</lay-tag> -->
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:nickname="{ row }">
|
<template v-slot:nickname="{ row }">
|
||||||
@ -151,9 +151,9 @@
|
|||||||
</lay-tab>
|
</lay-tab>
|
||||||
<lay-table :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
<lay-table :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
||||||
@ -242,9 +242,15 @@ const userShow = ref(false);
|
|||||||
const userColumns = ref([
|
const userColumns = ref([
|
||||||
{ title: '月度', width: '80px', key: 'month', align: 'center' },
|
{ title: '月度', width: '80px', key: 'month', align: 'center' },
|
||||||
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
||||||
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center' },
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
} },
|
||||||
|
{ 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})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
} },
|
||||||
// { title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
// { title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
||||||
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
||||||
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
||||||
@ -446,8 +452,12 @@ const columns = ref([
|
|||||||
{ title: '工号', width: '100px', key: 'code', align: 'center' },
|
{ title: '工号', width: '100px', key: 'code', align: 'center' },
|
||||||
{ title: '部门', width: '120px', key: 'group_name', align: 'center' },
|
{ title: '部门', width: '120px', key: 'group_name', align: 'center' },
|
||||||
// { title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
// { title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
||||||
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center' },
|
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
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: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -32,9 +32,6 @@
|
|||||||
<template v-slot:id="{ data }">
|
<template v-slot:id="{ data }">
|
||||||
{{ data.id }}
|
{{ data.id }}
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:department_score="{ data }">
|
|
||||||
{{ data.department_score == 0 ? '-' : data.department_score }}
|
|
||||||
</template>
|
|
||||||
<template v-slot:username="{ data }">
|
<template v-slot:username="{ data }">
|
||||||
{{ data.username }}
|
{{ data.username }}
|
||||||
</template>
|
</template>
|
||||||
@ -230,22 +227,33 @@ const columns = [
|
|||||||
title: '参评时间',
|
title: '参评时间',
|
||||||
width: '250px',
|
width: '250px',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'createtime'
|
key: 'createtime',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '自评总分',
|
title: '自评总分',
|
||||||
key: 'self_score',
|
key: 'self_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.self_score==''||row.self_score==0?'未评分':row.self_score;
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
title: '科室评分',
|
title: '科室评分',
|
||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
customSlot: 'department_score',
|
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// title: '医院评分',
|
// title: '医院评分',
|
||||||
// key: 'hospital_score',
|
// key: 'hospital_score',
|
||||||
// align: 'center',
|
// align: 'center',
|
||||||
|
// customSlot: ({row})=>{
|
||||||
|
// return row.hospital_score==''||row.hospital_score==0?'未评分':row.hospital_score;
|
||||||
|
// },
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
484
src/views/packet/examine.vue
Normal file
484
src/views/packet/examine.vue
Normal file
@ -0,0 +1,484 @@
|
|||||||
|
<template>
|
||||||
|
<lay-container fluid="true" class="organization-box">
|
||||||
|
<div style="display: flex">
|
||||||
|
<!-- 添加左侧科室列表 -->
|
||||||
|
<div v-if="userStore.userInfo.level == 1" :style="{ width: isFold ? `0px` : `200px` }" class="left-tree">
|
||||||
|
<div v-show="!isFold">
|
||||||
|
科室列表
|
||||||
|
</div>
|
||||||
|
<lay-tree v-show="!isFold" style="margin-top: 10px" :data="data" v-model:selectedKey="leftId"
|
||||||
|
:showLine="false" :default-expand-all="false" @node-click="handleClick">
|
||||||
|
<template #title="{ data }">
|
||||||
|
<span :class="leftId == data.id ? 'isChecked' : ''">
|
||||||
|
{{ data.name }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</lay-tree>
|
||||||
|
<div class="isFold" @click="isFold = !isFold">
|
||||||
|
<lay-icon v-if="!isFold" class="layui-icon-left"></lay-icon>
|
||||||
|
<lay-icon v-else class="layui-icon-right"></lay-icon>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 将原有内容包装在右侧容器中 -->
|
||||||
|
<div style="flex: 1; padding: 10px;">
|
||||||
|
<lay-row :space="10">
|
||||||
|
<lay-col :md="24">
|
||||||
|
<lay-card>
|
||||||
|
<lay-form style="margin-top: 20px">
|
||||||
|
<lay-row style="min-width: 1200px">
|
||||||
|
<lay-col :md="5">
|
||||||
|
<lay-form-item label="发生时间:" :label-width="100">
|
||||||
|
<lay-date-picker style="width: 100%" v-model="searchForm.fsdate"
|
||||||
|
placeholder="发生时间" allow-clear></lay-date-picker>
|
||||||
|
</lay-form-item>
|
||||||
|
</lay-col>
|
||||||
|
<lay-col :md="6" v-if="userStore.userInfo.level == 1">
|
||||||
|
<lay-form-item label="考评对象:" :label-width="100">
|
||||||
|
<lay-select v-model="searchForm.user_id" placeholder="请选择考评对象"
|
||||||
|
:show-search="true">
|
||||||
|
<lay-select-option v-for="user in userList" :key="user.id"
|
||||||
|
:value="user.id" :label="user.nickname">
|
||||||
|
</lay-select-option>
|
||||||
|
</lay-select>
|
||||||
|
</lay-form-item>
|
||||||
|
</lay-col>
|
||||||
|
<lay-col :md="4">
|
||||||
|
<lay-form-item label="审核状态:" :label-width="100">
|
||||||
|
<lay-select style="width: 100%" v-model="searchForm.status"
|
||||||
|
placeholder="审核状态">
|
||||||
|
<lay-select-option :value="1" label="待审核"></lay-select-option>
|
||||||
|
<lay-select-option :value="2" label="已通过"></lay-select-option>
|
||||||
|
<lay-select-option :value="3" label="已驳回"></lay-select-option>
|
||||||
|
</lay-select>
|
||||||
|
</lay-form-item>
|
||||||
|
</lay-col>
|
||||||
|
<lay-col :md="4">
|
||||||
|
<lay-form-item :label-width="0">
|
||||||
|
<lay-button style="margin-left: 20px" type="primary"
|
||||||
|
@click="toSearch">查询</lay-button>
|
||||||
|
<lay-button @click="toReset">重置</lay-button>
|
||||||
|
</lay-form-item>
|
||||||
|
</lay-col>
|
||||||
|
</lay-row>
|
||||||
|
</lay-form>
|
||||||
|
</lay-card>
|
||||||
|
</lay-col>
|
||||||
|
<lay-col :md="24">
|
||||||
|
<lay-card>
|
||||||
|
<div style="padding: 10px">
|
||||||
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">拒收红包审核</span>
|
||||||
|
</div>
|
||||||
|
<lay-table @change="handlePageChange" :columns="columns" :dataSource="dataSource"
|
||||||
|
:even="true" height="500px" size="lg" :page="page">
|
||||||
|
<template v-slot:checkbox="{ data }">
|
||||||
|
<lay-checkbox v-model="data.checked" :value="data.checked"></lay-checkbox>
|
||||||
|
</template>
|
||||||
|
<template v-slot:refundAmount="{ data }">
|
||||||
|
¥{{ data.refunding_amount }}
|
||||||
|
</template>
|
||||||
|
<template v-slot:refundType="{ data }">
|
||||||
|
{{ formatRefundType(data.refunding_type) }}
|
||||||
|
</template>
|
||||||
|
<template v-slot:status="{ data }">
|
||||||
|
<lay-tag v-if="data.status == 1" type="warm" size="sm">待审核</lay-tag>
|
||||||
|
<lay-tag v-if="data.status == 2" type="primary" size="sm">已通过</lay-tag>
|
||||||
|
<lay-tag v-if="data.status == 3" type="danger" size="sm">已驳回</lay-tag>
|
||||||
|
</template>
|
||||||
|
<template v-slot:operation="{ data }">
|
||||||
|
<lay-space>
|
||||||
|
<span style="color: #00A394;cursor: pointer" v-if="data.status == 1"
|
||||||
|
@click="openDetail(data, 2)">审核</span>
|
||||||
|
<span style="color: #00A394;cursor: pointer"
|
||||||
|
@click="openDetail(data, 1)">详情</span>
|
||||||
|
</lay-space>
|
||||||
|
</template>
|
||||||
|
</lay-table>
|
||||||
|
</lay-card>
|
||||||
|
</lay-col>
|
||||||
|
</lay-row>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</lay-container>
|
||||||
|
|
||||||
|
<!-- 修改详情弹窗内容 -->
|
||||||
|
<lay-layer v-model="detailVisible" :title="addIsInfo == 1 ? '详情查看' : '审核'" :type="4" :area="['950px', '100%']"
|
||||||
|
:shade="true" :btn="addIsInfo == 1 ? '' : addButton">
|
||||||
|
<div style="padding: 20px">
|
||||||
|
<lay-descriptions title="基本信息" :column="2" border>
|
||||||
|
<lay-descriptions-item label="考评对象">
|
||||||
|
{{ detailForm.nickname }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="科室">
|
||||||
|
{{ detailForm.group_name }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="发生日期">
|
||||||
|
{{ detailForm.fsdate }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="证明人">
|
||||||
|
{{ detailForm.zm_nickname }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="病区名称">
|
||||||
|
{{ detailForm.bq_name }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="患者姓名">
|
||||||
|
{{ detailForm.hz_name }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
</lay-descriptions>
|
||||||
|
|
||||||
|
<lay-descriptions title="退还信息" :column="2" border style="margin-top: 20px">
|
||||||
|
<lay-descriptions-item label="退还金额">
|
||||||
|
¥{{ detailForm.refunding_amount }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="退还日期">
|
||||||
|
{{ detailForm.thdate }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="退还方式">
|
||||||
|
{{ formatRefundType(detailForm.refunding_type) }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="状态">
|
||||||
|
|
||||||
|
{{ formatStatus(detailForm.status) }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="备注" :span="2">
|
||||||
|
{{ detailForm.notes || '暂无备注' }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="驳回原因" :span="2" v-if="detailForm.status == 3">
|
||||||
|
{{ detailForm.reason || '暂无驳回原因' }}
|
||||||
|
</lay-descriptions-item>
|
||||||
|
</lay-descriptions>
|
||||||
|
|
||||||
|
<lay-descriptions v-if="detailForm.fj_url" title="附件信息" :column="1" border style="margin-top: 20px">
|
||||||
|
<lay-descriptions-item label="附件">
|
||||||
|
<a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a>
|
||||||
|
</lay-descriptions-item>
|
||||||
|
</lay-descriptions>
|
||||||
|
<lay-descriptions v-if="detailForm.status == 1" title="审核" :column="1" border style="margin-top: 20px">
|
||||||
|
<lay-descriptions-item label="状态">
|
||||||
|
<lay-radio-group name="action" v-model="type">
|
||||||
|
<lay-radio :value="2">通过</lay-radio>
|
||||||
|
<lay-radio :value="3">驳回</lay-radio>
|
||||||
|
</lay-radio-group>
|
||||||
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="驳回原因" v-if="type == 3">
|
||||||
|
<lay-textarea v-model="reason" placeholder="请输入驳回原因"></lay-textarea>
|
||||||
|
</lay-descriptions-item>
|
||||||
|
</lay-descriptions>
|
||||||
|
</div>
|
||||||
|
</lay-layer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { onMounted, reactive, ref } from 'vue'
|
||||||
|
import { getDoctorName, getRejectRedEnvelopes, rejectRedEnvelopesCreate, rejectRedEnvelopesUpdate, userGroupData } from '@/api/module/home';
|
||||||
|
import { layer } from '@layui/layui-vue';
|
||||||
|
import { useUserStore } from '@/store/user';
|
||||||
|
const userStore = useUserStore()
|
||||||
|
// 搜索表单
|
||||||
|
const searchForm = ref({
|
||||||
|
fsdate: '',
|
||||||
|
user_id: '',
|
||||||
|
status: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 修改分页参数的定义方式
|
||||||
|
const page = reactive({
|
||||||
|
current: 1,
|
||||||
|
limit: 10,
|
||||||
|
total: 1
|
||||||
|
})
|
||||||
|
|
||||||
|
const type = ref(1)
|
||||||
|
const id = ref(0)
|
||||||
|
const reason = ref('')
|
||||||
|
|
||||||
|
|
||||||
|
// 添加级联选择器所需的数据结构
|
||||||
|
const ksOptions = ref([])
|
||||||
|
|
||||||
|
// 修改获取用户列表方法为懒加载方法
|
||||||
|
const getGroupList = () => {
|
||||||
|
userGroupData({}).then((res) => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
ksOptions.value = res.data;
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const userList = ref([]);
|
||||||
|
const getUserList = () => {
|
||||||
|
getDoctorName({}).then((res) => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
userList.value = res.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 表格数据
|
||||||
|
const dataSource = ref([])
|
||||||
|
|
||||||
|
// 添加左侧树相关的变量
|
||||||
|
const data = ref([])
|
||||||
|
const leftId = ref('')
|
||||||
|
const isFold = ref(false)
|
||||||
|
|
||||||
|
// 修改获取列表数据的方法,添加科室id参数
|
||||||
|
const getList = () => {
|
||||||
|
const params = {
|
||||||
|
page: page.current,
|
||||||
|
size: page.limit,
|
||||||
|
group_id: leftId.value, // 添加科室id参数
|
||||||
|
...searchForm.value
|
||||||
|
}
|
||||||
|
getRejectRedEnvelopes(params).then((res) => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
dataSource.value = res.data.data;
|
||||||
|
page.total = res.data.count;
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 格式化退还方式
|
||||||
|
const formatRefundType = (type) => {
|
||||||
|
return type == 1 ? '现金' : '转账'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改表格列配置
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: '发生日期',
|
||||||
|
width: '120px',
|
||||||
|
key: 'fsdate',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '考评对象',
|
||||||
|
width: '120px',
|
||||||
|
key: 'nickname',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '科室',
|
||||||
|
width: '120px',
|
||||||
|
key: 'group_name',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '病区',
|
||||||
|
width: '120px',
|
||||||
|
key: 'bq_name',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '患者姓名',
|
||||||
|
width: '120px',
|
||||||
|
key: 'hz_name',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '退还金额',
|
||||||
|
width: '100px',
|
||||||
|
key: 'refunding_amount',
|
||||||
|
align: 'center',
|
||||||
|
customSlot: 'refundAmount'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '退还日期',
|
||||||
|
width: '120px',
|
||||||
|
key: 'thdate',
|
||||||
|
align: 'center'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '退还方式',
|
||||||
|
width: '120px',
|
||||||
|
key: 'refunding_type',
|
||||||
|
align: 'center',
|
||||||
|
customSlot: 'refundType'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '状态',
|
||||||
|
width: '130px',
|
||||||
|
key: 'status',
|
||||||
|
align: 'center',
|
||||||
|
customSlot: 'status'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '150px',
|
||||||
|
key: 'operation',
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
customSlot: 'operation'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
// 添加编辑状态标识
|
||||||
|
// 搜索方法
|
||||||
|
const toSearch = () => {
|
||||||
|
page.current = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置方法
|
||||||
|
const toReset = () => {
|
||||||
|
searchForm.value = {
|
||||||
|
fsdate: '',
|
||||||
|
user_id: '',
|
||||||
|
status: ''
|
||||||
|
}
|
||||||
|
page.current = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
// 添加分页变化处理方法
|
||||||
|
const handlePageChange = (current: number) => {
|
||||||
|
page.current = current
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加状态格式化方法
|
||||||
|
const formatStatus = (status: number) => {
|
||||||
|
switch (status) {
|
||||||
|
case 1:
|
||||||
|
return '待审核'
|
||||||
|
case 2:
|
||||||
|
return '已通过'
|
||||||
|
case 3:
|
||||||
|
return '已驳回'
|
||||||
|
default:
|
||||||
|
return '未知'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情弹窗控制
|
||||||
|
const detailVisible = ref(false)
|
||||||
|
const detailForm = ref()
|
||||||
|
const addIsInfo = ref(1);
|
||||||
|
// 打开详情弹窗
|
||||||
|
const openDetail = (data, type) => {
|
||||||
|
id.value = data.id
|
||||||
|
detailForm.value = { ...data }
|
||||||
|
detailVisible.value = true
|
||||||
|
addIsInfo.value = type
|
||||||
|
reason.value = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加获取左侧科室列表的方法
|
||||||
|
const getLeftList = () => {
|
||||||
|
userGroupData({}).then((res) => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
data.value = res.data;
|
||||||
|
if (userStore.userInfo.level == 1) {
|
||||||
|
leftId.value = res.data[0].id;
|
||||||
|
} else {
|
||||||
|
leftId.value = userStore.userInfo.group_id;
|
||||||
|
}
|
||||||
|
getList(); // 获取右侧列表数据
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改点击科室树节点的处理方法
|
||||||
|
function handleClick(node: any) {
|
||||||
|
leftId.value = node.id
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getLeftList(); // 替换原有的 getList()
|
||||||
|
getUserList();
|
||||||
|
getGroupList();
|
||||||
|
})
|
||||||
|
|
||||||
|
const addButton = ref([
|
||||||
|
{
|
||||||
|
text: "确认",
|
||||||
|
callback: async () => {
|
||||||
|
const submitRequest = rejectRedEnvelopesUpdate({ status: type.value, id: id.value, reason: reason.value });
|
||||||
|
submitRequest.then(res => {
|
||||||
|
if (res.code === 1) {
|
||||||
|
layer.msg('审核成功', { icon: 1 })
|
||||||
|
getList()
|
||||||
|
} else {
|
||||||
|
layer.msg(res.msg, { icon: 2 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
detailVisible.value = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "取消",
|
||||||
|
callback: () => {
|
||||||
|
detailVisible.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.layui-table-header .layui-table-cell {
|
||||||
|
background-color: #ECF8FA !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form-wrapper::-webkit-scrollbar {
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form-wrapper::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form-wrapper::-webkit-scrollbar-track {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* 添加左侧树的样式 */
|
||||||
|
.organization-box {
|
||||||
|
width: calc(100vw - 240px);
|
||||||
|
height: calc(100vh - 110px);
|
||||||
|
margin-top: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: #fff;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-tree {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 20px 15px 0 5px;
|
||||||
|
height: 1200px;
|
||||||
|
border-right: 1px solid #e6e6e6;
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isFold {
|
||||||
|
position: absolute;
|
||||||
|
top: 36%;
|
||||||
|
right: -10px;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
border-radius: 13px;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #e6e6e6;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isChecked {
|
||||||
|
display: inline-block;
|
||||||
|
background-color: #e8f1ff;
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,25 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<lay-container fluid="true" class="organization-box">
|
<lay-container fluid="true" class="organization-box">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<!-- 添加左侧科室列表 -->
|
|
||||||
<div v-if="userStore.userInfo.level == 1" :style="{ width: isFold ? `0px` : `200px` }" class="left-tree">
|
|
||||||
<div v-show="!isFold">
|
|
||||||
科室列表
|
|
||||||
</div>
|
|
||||||
<lay-tree v-show="!isFold" style="margin-top: 10px" :data="data" v-model:selectedKey="leftId"
|
|
||||||
:showLine="false" :default-expand-all="false" @node-click="handleClick">
|
|
||||||
<template #title="{ data }">
|
|
||||||
<span :class="leftId == data.id ? 'isChecked' : ''">
|
|
||||||
{{ data.name }}
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
</lay-tree>
|
|
||||||
<div class="isFold" @click="isFold = !isFold">
|
|
||||||
<lay-icon v-if="!isFold" class="layui-icon-left"></lay-icon>
|
|
||||||
<lay-icon v-else class="layui-icon-right"></lay-icon>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 将原有内容包装在右侧容器中 -->
|
<!-- 将原有内容包装在右侧容器中 -->
|
||||||
<div style="flex: 1; padding: 10px;">
|
<div style="flex: 1; padding: 10px;">
|
||||||
<lay-row :space="10">
|
<lay-row :space="10">
|
||||||
@ -69,7 +50,6 @@
|
|||||||
<div style="padding: 10px">
|
<div style="padding: 10px">
|
||||||
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">拒收红包列表</span>
|
<span style="font-size: 18px;vertical-align: center;margin-right: 20px">拒收红包列表</span>
|
||||||
<lay-button type="primary" size="sm" @click="openAdd">新增</lay-button>
|
<lay-button type="primary" size="sm" @click="openAdd">新增</lay-button>
|
||||||
<lay-button type="primary" size="sm">导出Excel</lay-button>
|
|
||||||
</div>
|
</div>
|
||||||
<lay-table @change="handlePageChange" :columns="columns" :dataSource="dataSource" :even="true" height="500px" size="lg"
|
<lay-table @change="handlePageChange" :columns="columns" :dataSource="dataSource" :even="true" height="500px" size="lg"
|
||||||
:page="page">
|
:page="page">
|
||||||
@ -83,19 +63,13 @@
|
|||||||
{{ formatRefundType(data.refunding_type) }}
|
{{ formatRefundType(data.refunding_type) }}
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:status="{ data }">
|
<template v-slot:status="{ data }">
|
||||||
<lay-tag v-if="data.status == 1" type="warm">待审核</lay-tag>
|
<lay-tag v-if="data.status == 1" type="warm" size="sm">待审核</lay-tag>
|
||||||
<lay-tag v-if="data.status == 2" type="primary">已通过</lay-tag>
|
<lay-tag v-if="data.status == 2" type="primary" size="sm">已通过</lay-tag>
|
||||||
<lay-tag v-if="data.status == 3" type="danger">已驳回</lay-tag>
|
<lay-tag v-if="data.status == 3" type="danger" size="sm">已驳回</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operation="{ data }">
|
<template v-slot:operation="{ data }">
|
||||||
<lay-popconfirm v-if="data.status == 1 && data.level == 1" content="请确认你的操作,流程将结束"
|
<span style="color: #00A394;cursor: pointer"
|
||||||
trigger="click" cancelText="审核拒绝" confirmText="审核通过" @confirm="confirm(data, 2)"
|
@click="openDetail(data)">详情</span>
|
||||||
@cancel="confirm(data, 3)">
|
|
||||||
<lay-button v-if="data.status == 1 && data.level == 1" type="primary" size="sm"
|
|
||||||
style="margin-left: 8px">审核</lay-button>
|
|
||||||
</lay-popconfirm>
|
|
||||||
<lay-button type="normal" size="sm" style="margin-left: 8px"
|
|
||||||
@click="openDetail(data)">详情</lay-button>
|
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-card>
|
</lay-card>
|
||||||
@ -109,7 +83,7 @@
|
|||||||
<lay-layer v-model="visible" :title="formTitle" :type="4" :area="['950px', '100%']" :shade="true">
|
<lay-layer v-model="visible" :title="formTitle" :type="4" :area="['950px', '100%']" :shade="true">
|
||||||
<div style="padding: 20px">
|
<div style="padding: 20px">
|
||||||
<lay-form :model="form" mode="inline">
|
<lay-form :model="form" mode="inline">
|
||||||
<lay-form-item label="考评对象" required>
|
<lay-form-item label="考评对象" required prop="user_id">
|
||||||
<lay-select disabled v-model="form.user_id" placeholder="请选择考评对象" :show-search="true">
|
<lay-select disabled v-model="form.user_id" placeholder="请选择考评对象" :show-search="true">
|
||||||
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id"
|
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id"
|
||||||
:label="user.nickname">
|
:label="user.nickname">
|
||||||
@ -121,30 +95,30 @@
|
|||||||
:checkStrictly="false" search :replaceFields="replaceFields">
|
:checkStrictly="false" search :replaceFields="replaceFields">
|
||||||
</lay-cascader>
|
</lay-cascader>
|
||||||
</lay-form-item> -->
|
</lay-form-item> -->
|
||||||
<lay-form-item label="发生日期" required>
|
<lay-form-item label="发生日期" required prop="fsdate">
|
||||||
<lay-date-picker v-model="form.fsdate" placeholder="请选择发生日期"></lay-date-picker>
|
<lay-date-picker v-model="form.fsdate" placeholder="请选择发生日期"></lay-date-picker>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="证明人" required>
|
<lay-form-item label="证明人" required prop="zm_user_id">
|
||||||
<lay-select v-model="form.zm_user_id" placeholder="请选择证明人" :show-search="true">
|
<lay-select v-model="form.zm_user_id" placeholder="请选择证明人" :show-search="true">
|
||||||
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id"
|
<lay-select-option v-for="user in userList" :key="user.id" :value="user.id"
|
||||||
:label="user.nickname">
|
:label="user.nickname">
|
||||||
</lay-select-option>
|
</lay-select-option>
|
||||||
</lay-select>
|
</lay-select>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="病区名称" required>
|
<lay-form-item label="病区名称" required prop="bq_name">
|
||||||
<lay-input style="width: 220px" v-model="form.bq_name" placeholder="请输入病区名称"></lay-input>
|
<lay-input style="width: 220px" v-model="form.bq_name" placeholder="请输入病区名称"></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="患者姓名" required>
|
<lay-form-item label="患者姓名" required prop="hz_name">
|
||||||
<lay-input style="width: 220px" v-model="form.hz_name" placeholder="请输入患者姓名"></lay-input>
|
<lay-input style="width: 220px" v-model="form.hz_name" placeholder="请输入患者姓名"></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="退还金额" required>
|
<lay-form-item label="退还金额" required prop="refunding_amount">
|
||||||
<lay-input-number style="width: 220px" v-model="form.refunding_amount"
|
<lay-input-number style="width: 220px" v-model="form.refunding_amount"
|
||||||
placeholder="请输入退还金额"></lay-input-number>
|
placeholder="请输入退还金额"></lay-input-number>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="退还日期" required>
|
<lay-form-item label="退还日期" required prop="thdate">
|
||||||
<lay-date-picker v-model="form.thdate" placeholder="请选择退还日期"></lay-date-picker>
|
<lay-date-picker v-model="form.thdate" placeholder="请选择退还日期"></lay-date-picker>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="退还方式" required>
|
<lay-form-item label="退还方式" required prop="refunding_type" >
|
||||||
<lay-select v-model="form.refunding_type" placeholder="请选择退还方式">
|
<lay-select v-model="form.refunding_type" placeholder="请选择退还方式">
|
||||||
<lay-select-option :value="1" label="现金"></lay-select-option>
|
<lay-select-option :value="1" label="现金"></lay-select-option>
|
||||||
<lay-select-option :value="2" label="转账"></lay-select-option>
|
<lay-select-option :value="2" label="转账"></lay-select-option>
|
||||||
@ -177,16 +151,16 @@
|
|||||||
<div style="padding: 20px">
|
<div style="padding: 20px">
|
||||||
<lay-descriptions title="基本信息" :column="2" border>
|
<lay-descriptions title="基本信息" :column="2" border>
|
||||||
<lay-descriptions-item label="考评对象">
|
<lay-descriptions-item label="考评对象">
|
||||||
<lay-tag size="small" type="primary">{{ detailForm.nickname }}</lay-tag>
|
{{ detailForm.nickname }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="科室">
|
<lay-descriptions-item label="科室">
|
||||||
<lay-tag size="small" type="normal">{{ detailForm.group_name }}</lay-tag>
|
{{ detailForm.group_name }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="发生日期">
|
<lay-descriptions-item label="发生日期">
|
||||||
{{ detailForm.fsdate }}
|
{{ detailForm.fsdate }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="证明人">
|
<lay-descriptions-item label="证明人">
|
||||||
<lay-tag size="small" type="warm">{{ detailForm.zm_nickname }}</lay-tag>
|
{{ detailForm.zm_nickname }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="病区名称">
|
<lay-descriptions-item label="病区名称">
|
||||||
{{ detailForm.bq_name }}
|
{{ detailForm.bq_name }}
|
||||||
@ -198,23 +172,23 @@
|
|||||||
|
|
||||||
<lay-descriptions title="退还信息" :column="2" border style="margin-top: 20px">
|
<lay-descriptions title="退还信息" :column="2" border style="margin-top: 20px">
|
||||||
<lay-descriptions-item label="退还金额">
|
<lay-descriptions-item label="退还金额">
|
||||||
<lay-tag size="small" type="danger">¥{{ detailForm.refunding_amount }}</lay-tag>
|
¥{{ detailForm.refunding_amount }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="退还日期">
|
<lay-descriptions-item label="退还日期">
|
||||||
{{ detailForm.thdate }}
|
{{ detailForm.thdate }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="退还方式">
|
<lay-descriptions-item label="退还方式">
|
||||||
<lay-tag size="small" type="normal">{{ formatRefundType(detailForm.refunding_type) }}</lay-tag>
|
{{ formatRefundType(detailForm.refunding_type) }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="状态">
|
<lay-descriptions-item label="状态">
|
||||||
<lay-tag size="small"
|
|
||||||
:type="detailForm.status == 2 ? 'primary' : detailForm.status == 3 ? 'danger' : 'warm'">
|
|
||||||
{{ formatStatus(detailForm.status) }}
|
{{ formatStatus(detailForm.status) }}
|
||||||
</lay-tag>
|
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
<lay-descriptions-item label="备注" :span="2">
|
<lay-descriptions-item label="备注" :span="2">
|
||||||
{{ detailForm.notes || '暂无备注' }}
|
{{ detailForm.notes || '暂无备注' }}
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
|
<lay-descriptions-item label="驳回原因" :span="2" v-if="detailForm.status == 3">
|
||||||
|
{{ detailForm.reason || '暂无驳回原因' }}
|
||||||
|
</lay-descriptions-item>
|
||||||
</lay-descriptions>
|
</lay-descriptions>
|
||||||
|
|
||||||
<lay-descriptions v-if="detailForm.fj_url" title="附件信息" :column="1" border style="margin-top: 20px">
|
<lay-descriptions v-if="detailForm.fj_url" title="附件信息" :column="1" border style="margin-top: 20px">
|
||||||
@ -222,10 +196,6 @@
|
|||||||
<a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a>
|
<a style="color: #009688" :href="detailForm.fj_url" target="_blank">附件下载</a>
|
||||||
</lay-descriptions-item>
|
</lay-descriptions-item>
|
||||||
</lay-descriptions>
|
</lay-descriptions>
|
||||||
|
|
||||||
<div style="text-align: center; margin-top: 20px;">
|
|
||||||
<lay-button @click="detailVisible = false">关闭</lay-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</lay-layer>
|
</lay-layer>
|
||||||
</template>
|
</template>
|
||||||
@ -510,15 +480,7 @@ const submitForm = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const confirm = (data: any, type: number) => {
|
|
||||||
const submitRequest = rejectRedEnvelopesUpdate({ status: type, id: data.id });
|
|
||||||
submitRequest.then(res => {
|
|
||||||
if (res.code === 1) {
|
|
||||||
layer.msg('审核成功', { icon: 1 })
|
|
||||||
getList()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 添加分页变化处理方法
|
// 添加分页变化处理方法
|
||||||
const handlePageChange = (current: number) => {
|
const handlePageChange = (current: number) => {
|
||||||
page.current = current
|
page.current = current
|
||||||
|
@ -60,10 +60,10 @@
|
|||||||
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
||||||
@change="pageChange">
|
@change="pageChange">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="danger">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="danger" size="sm">医院已评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:nickname="{ row }">
|
<template v-slot:nickname="{ row }">
|
||||||
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
@ -135,10 +135,10 @@
|
|||||||
<lay-table height="400px" :default-expand-all="true" :columns="userColumns"
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns"
|
||||||
:data-source="userDataSource">
|
:data-source="userDataSource">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="danger">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="danger" size="sm">医院已评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
||||||
@ -181,10 +181,16 @@ const userShow = ref(false);
|
|||||||
const userColumns = ref([
|
const userColumns = ref([
|
||||||
{ title: '季度', width: '80px', key: 'quarter', align: 'center' },
|
{ title: '季度', width: '80px', key: 'quarter', align: 'center' },
|
||||||
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
{ title: '考评对象', width: '100px', key: 'user', align: 'center' },
|
||||||
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center' },
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
} },
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
{ 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})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
} },
|
||||||
|
// { title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
||||||
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
{ title: '状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
||||||
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
{ title: '操作', width: '100px', key: 'operator', customSlot: 'operator', align: 'center' },
|
||||||
])
|
])
|
||||||
@ -195,6 +201,7 @@ const searchAccountUser = ref(dayjs().year());
|
|||||||
const openUserListShow = (row) => {
|
const openUserListShow = (row) => {
|
||||||
userInfo.value = row;
|
userInfo.value = row;
|
||||||
userShow.value = true;
|
userShow.value = true;
|
||||||
|
userDataSource.value = [];
|
||||||
getUserListInfo();
|
getUserListInfo();
|
||||||
}
|
}
|
||||||
const inputChange = (row) => {
|
const inputChange = (row) => {
|
||||||
@ -432,9 +439,13 @@ const columns = ref([
|
|||||||
{ 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: 'hospital_score_scoringrecord', align: 'center' },
|
// { title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center' },
|
return row.department_score_scoringrecord==''||row.department_score_scoringrecord==0?'未评分':row.department_score_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: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
{ title: '自评状态', width: '100px', key: 'scoringrecord_status', customSlot: 'scoringrecord_status', align: 'center' },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -219,17 +219,26 @@ const columns = [
|
|||||||
title: '参评时间',
|
title: '参评时间',
|
||||||
width: '250px',
|
width: '250px',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'createtime'
|
key: 'createtime',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '自评总分',
|
title: '自评总分',
|
||||||
key: 'self_score',
|
key: 'self_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.self_score==''||row.self_score==0?'未评分':row.self_score;
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
title: '科室评分',
|
title: '科室评分',
|
||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
customSlot: 'department_score',
|
customSlot: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// title: '医院评分',
|
// title: '医院评分',
|
||||||
|
@ -72,12 +72,12 @@
|
|||||||
<lay-button size="sm" type="primary" @click="changeAddShow()">新增</lay-button>
|
<lay-button size="sm" type="primary" @click="changeAddShow()">新增</lay-button>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<lay-button size="xs" border="green" border-style="dashed" @click="edit(row)">
|
<lay-space size="lg">
|
||||||
编辑
|
<span style="color: #00A394;cursor: pointer" @click="edit(row)">编辑</span>
|
||||||
</lay-button>
|
<lay-popconfirm trigger="click" content="确定要删除吗?" @confirm="del(row)">
|
||||||
<lay-popconfirm trigger="click" content="确定要删除此用户吗?" @confirm="del(row)">
|
<span style="color: #00A394;cursor: pointer">删除</span>
|
||||||
<lay-button size="xs" border="red" border-style="dashed">删除</lay-button>
|
|
||||||
</lay-popconfirm>
|
</lay-popconfirm>
|
||||||
|
</lay-space>
|
||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</div>
|
</div>
|
||||||
@ -86,9 +86,10 @@
|
|||||||
<div style="padding: 20px">
|
<div style="padding: 20px">
|
||||||
<lay-form :model="model11" ref="layFormRef11" mode="inline">
|
<lay-form :model="model11" ref="layFormRef11" mode="inline">
|
||||||
<lay-form-item label="证件照" prop="username">
|
<lay-form-item label="证件照" prop="username">
|
||||||
<lay-upload style="width:180px;" ref="uploadRefA" :number="1" field="file" :size="1000" :headers="{ token: userStore.token }"
|
<lay-upload style="width:180px;" ref="uploadRefA" :number="1" field="file" :size="1000"
|
||||||
url="http://yfyd.hschool.com.cn/api/common/upload" @cutdone="getCutDone2" v-model="file2" :auto="true" acceptMime="images"
|
:headers="{ token: userStore.token }" url="http://yfyd.hschool.com.cn/api/common/upload"
|
||||||
:cut="false" :cutOptions="cutOptions" @done="getFileDone2">
|
@cutdone="getCutDone2" v-model="file2" :auto="true" acceptMime="images" :cut="false"
|
||||||
|
:cutOptions="cutOptions" @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;" />
|
||||||
@ -133,9 +134,10 @@
|
|||||||
<lay-input v-model="model11.business_nature" size="lg" placeholder="请输入业务性质"></lay-input>
|
<lay-input v-model="model11.business_nature" size="lg" placeholder="请输入业务性质"></lay-input>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<lay-form-item label="资格证图片" prop="username">
|
<lay-form-item label="资格证图片" prop="username">
|
||||||
<lay-upload style="width:180px;" ref="uploadRef" :number="1" field="file" :size="1000" :headers="{ token: userStore.token }"
|
<lay-upload style="width:180px;" ref="uploadRef" :number="1" field="file" :size="1000"
|
||||||
url="http://yfyd.hschool.com.cn/api/common/upload" @cutdone="getCutDone" v-model="file1" :auto="true" acceptMime="images"
|
:headers="{ token: userStore.token }" url="http://yfyd.hschool.com.cn/api/common/upload"
|
||||||
:cut="false" :cutOptions="cutOptions" @done="getFileDone">
|
@cutdone="getCutDone" v-model="file1" :auto="true" acceptMime="images" :cut="false"
|
||||||
|
:cutOptions="cutOptions" @done="getFileDone">
|
||||||
<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;" />
|
||||||
@ -157,12 +159,10 @@
|
|||||||
<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>
|
:replaceFields="replaceFields" v-model="model11.group_id" placeholder="选择科室" allow-clear></lay-cascader>
|
||||||
</lay-form-item>
|
</lay-form-item>
|
||||||
<!-- <lay-form-item label="党支部" prop="party_id">
|
<lay-form-item label="党支部" prop="party_id">
|
||||||
<lay-cascader size="lg" style="width:180px;" :options="partyList" search
|
<lay-cascader size="lg" style="width:180px;" :options="partyList" search :replaceFields="replaceFields"
|
||||||
:replaceFields="replaceFields"
|
v-model="model11.party_id" placeholder="选择党支部" allow-clear></lay-cascader>
|
||||||
v-model="model11.party_id"
|
</lay-form-item>
|
||||||
placeholder="选择党支部" allow-clear></lay-cascader>
|
|
||||||
</lay-form-item> -->
|
|
||||||
<lay-form-item label="角色组" prop="auth_group_id" required>
|
<lay-form-item label="角色组" prop="auth_group_id" required>
|
||||||
<lay-select v-model="model11.auth_group_id" style="width:180px;" placeholder="选择角色组">
|
<lay-select v-model="model11.auth_group_id" style="width:180px;" placeholder="选择角色组">
|
||||||
<lay-select-option size="lg" v-for="item in authList" :value="item.id"
|
<lay-select-option size="lg" v-for="item in authList" :value="item.id"
|
||||||
@ -330,7 +330,7 @@ const columns = ref([
|
|||||||
{ title: '手机号', width: '120px', key: 'mobile', align: 'center' },
|
{ title: '手机号', width: '120px', key: 'mobile', align: 'center' },
|
||||||
{ title: '性别', width: '80px', key: 'gender', customSlot: 'gender', align: 'center' },
|
{ title: '性别', width: '80px', key: 'gender', customSlot: 'gender', align: 'center' },
|
||||||
{ title: '身份证号', width: '180px', key: 'member_code', align: 'center' },
|
{ title: '身份证号', width: '180px', key: 'member_code', align: 'center' },
|
||||||
{ title: '状态', width: '100px', key: 'status', customSlot: 'status', align: 'center' },
|
// { title: '状态', width: '100px', key: 'status', customSlot: 'status', align: 'center' },
|
||||||
{ title: '操作', width: '150px', customSlot: 'operator', key: 'operator', fixed: 'right', align: 'center' }
|
{ title: '操作', width: '150px', customSlot: 'operator', key: 'operator', fixed: 'right', align: 'center' }
|
||||||
])
|
])
|
||||||
const change = (page: any) => {
|
const change = (page: any) => {
|
||||||
@ -351,7 +351,7 @@ const model11 = reactive({
|
|||||||
group_id: [],
|
group_id: [],
|
||||||
party_id: [],
|
party_id: [],
|
||||||
avatar: '',
|
avatar: '',
|
||||||
license_image:'',
|
license_image: '',
|
||||||
birthday: '',
|
birthday: '',
|
||||||
group_level: '',
|
group_level: '',
|
||||||
party_level: '',
|
party_level: '',
|
||||||
@ -374,7 +374,7 @@ const changeAddShow = () => {
|
|||||||
mobile: '',
|
mobile: '',
|
||||||
email: '',
|
email: '',
|
||||||
member_code: '',
|
member_code: '',
|
||||||
license_image:'',
|
license_image: '',
|
||||||
code: '',
|
code: '',
|
||||||
gender: 0,
|
gender: 0,
|
||||||
id: 0,
|
id: 0,
|
||||||
|
@ -5,7 +5,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 :page="page" height="600px" size="lg" @change="changePage" :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> -->
|
||||||
@ -15,6 +16,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ data }">
|
<template v-slot:operator="{ data }">
|
||||||
<lay-space size="lg">
|
<lay-space size="lg">
|
||||||
|
<span @click="handleViewDetail(data)" style="color: #00A394;cursor: pointer">查看详情</span>
|
||||||
<span style="color: #00A394;cursor: pointer" @click="editShowMsd(data)">编辑</span>
|
<span style="color: #00A394;cursor: pointer" @click="editShowMsd(data)">编辑</span>
|
||||||
<lay-popconfirm trigger="click" content="确定要删除吗?" @confirm="delShowMsd(data)">
|
<lay-popconfirm trigger="click" content="确定要删除吗?" @confirm="delShowMsd(data)">
|
||||||
<span style="color: #00A394;cursor: pointer">删除</span>
|
<span style="color: #00A394;cursor: pointer">删除</span>
|
||||||
@ -23,6 +25,18 @@
|
|||||||
</template>
|
</template>
|
||||||
</lay-table>
|
</lay-table>
|
||||||
</lay-card>
|
</lay-card>
|
||||||
|
<!-- 详情弹窗 -->
|
||||||
|
<lay-layer v-model="showDetail" :type="4" :title="null" :area="['700px', '100%']">
|
||||||
|
<div class="notice-detail">
|
||||||
|
<h2>{{ currentNotice?.title }}</h2>
|
||||||
|
<div class="notice-info">
|
||||||
|
<span>发布时间:{{ currentNotice?.createtime }}</span>
|
||||||
|
<span>发布人:{{ currentNotice?.author }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="notice-content" v-html="currentNotice?.content">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</lay-layer>
|
||||||
<lay-layer v-model="addShow" :title="addIsEdit == 1 ? '新增公告' : '编辑公告'" :type="4" :shade="true"
|
<lay-layer v-model="addShow" :title="addIsEdit == 1 ? '新增公告' : '编辑公告'" :type="4" :shade="true"
|
||||||
:area="['950px', '100%']" :btn="addButton">
|
:area="['950px', '100%']" :btn="addButton">
|
||||||
<lay-container fluid="true" style="padding: 20px">
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
@ -67,7 +81,13 @@ import { baseURL } from '@/api/http'
|
|||||||
// 引入富文本编辑器与样式
|
// 引入富文本编辑器与样式
|
||||||
import { Quill, QuillEditor } from '@vueup/vue-quill'
|
import { Quill, QuillEditor } from '@vueup/vue-quill'
|
||||||
import '@vueup/vue-quill/dist/vue-quill.snow.css'
|
import '@vueup/vue-quill/dist/vue-quill.snow.css'
|
||||||
|
// 查看详情
|
||||||
|
const showDetail = ref(false)
|
||||||
|
const currentNotice = ref()
|
||||||
|
const handleViewDetail = (row) => {
|
||||||
|
currentNotice.value = row;
|
||||||
|
showDetail.value = true;
|
||||||
|
};
|
||||||
const content = ref('')
|
const content = ref('')
|
||||||
const editorRef = ref<any>(null)
|
const editorRef = ref<any>(null)
|
||||||
// !!!如果方法报错,把imageHandler 方法放到options的上面
|
// !!!如果方法报错,把imageHandler 方法放到options的上面
|
||||||
@ -333,12 +353,6 @@ const columns = [
|
|||||||
width: "120px",
|
width: "120px",
|
||||||
key: "author"
|
key: "author"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: "公告内容",
|
|
||||||
width: "280px",
|
|
||||||
key: "content",
|
|
||||||
ellipsisTooltip: true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "发布时间",
|
title: "发布时间",
|
||||||
width: "180px",
|
width: "180px",
|
||||||
@ -419,7 +433,78 @@ const addButton = ref([
|
|||||||
height: 300px;
|
height: 300px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
:deep(.layui-input-block){
|
|
||||||
|
:deep(.layui-input-block) {
|
||||||
max-width: 85%;
|
max-width: 85%;
|
||||||
}
|
}
|
||||||
|
#main {
|
||||||
|
width: 100%;
|
||||||
|
height: 410px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaving-messages {
|
||||||
|
li {
|
||||||
|
position: relative;
|
||||||
|
padding: 10px 0;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
padding-bottom: 5px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 14px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
>span {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.target {
|
||||||
|
width: 100%;
|
||||||
|
height: 440px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.target-title {
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statistics {
|
||||||
|
font-size: 24px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statistics-body {
|
||||||
|
padding: 14px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-detail {
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-info {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-content {
|
||||||
|
line-height: 1.8;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -52,12 +52,12 @@
|
|||||||
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.总党支已评 -->
|
||||||
<lay-tag v-if="row.scoringrecord_status == 1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 1" type="primary" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:nickname="{ row }">
|
<template v-slot:nickname="{ row }">
|
||||||
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
@ -167,12 +167,12 @@
|
|||||||
</lay-tab>
|
</lay-tab>
|
||||||
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评 </lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
||||||
@ -341,13 +341,27 @@
|
|||||||
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' },
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
} },
|
||||||
{ title: '支部评分', width: '100px', key: 'party_branch_score', align: 'center' },
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '总党支评分', width: '100px', key: 'overall_party_score', align: 'center' },
|
return row.self_score==''||row.self_score==0?'未评分':row.self_score;
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
} },
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
} },
|
||||||
|
{ title: '支部评分', width: '100px', key: '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: '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' },
|
||||||
])
|
])
|
||||||
@ -716,12 +730,24 @@
|
|||||||
{ 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' },
|
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
return row.user_scoringrecord==''||row.user_scoringrecord==0?'未评分':row.user_scoringrecord;
|
||||||
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center' },
|
} },
|
||||||
{ title: '党总支评分', width: '100px', key: 'overall_score_scoringrecord', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
return row.department_score_scoringrecord==''||row.department_score_scoringrecord==0?'未评分':row.department_score_scoringrecord;
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
} },
|
||||||
|
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.party_score_scoringrecord==''||row.party_score_scoringrecord==0?'未评分':row.party_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: '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: '操作',
|
||||||
|
@ -52,12 +52,12 @@
|
|||||||
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.总党支已评 -->
|
||||||
<lay-tag v-if="row.scoringrecord_status == 1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 1" type="primary" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:nickname="{ row }">
|
<template v-slot:nickname="{ row }">
|
||||||
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
@ -167,12 +167,12 @@
|
|||||||
</lay-tab>
|
</lay-tab>
|
||||||
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评</lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
||||||
@ -341,13 +341,27 @@
|
|||||||
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' },
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
} },
|
||||||
{ title: '支部评分', width: '100px', key: 'party_branch_score', align: 'center' },
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '总党支评分', width: '100px', key: 'overall_party_score', align: 'center' },
|
return row.self_score==''||row.self_score==0?'未评分':row.self_score;
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
} },
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
} },
|
||||||
|
{ title: '支部评分', width: '100px', key: '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: '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' },
|
||||||
])
|
])
|
||||||
@ -716,12 +730,24 @@
|
|||||||
{ 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' },
|
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
return row.user_scoringrecord==''||row.user_scoringrecord==0?'未评分':row.user_scoringrecord;
|
||||||
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center' },
|
} },
|
||||||
{ title: '党总支评分', width: '100px', key: 'overall_score_scoringrecord', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
return row.department_score_scoringrecord==''||row.department_score_scoringrecord==0?'未评分':row.department_score_scoringrecord;
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
} },
|
||||||
|
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.party_score_scoringrecord==''||row.party_score_scoringrecord==0?'未评分':row.party_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: '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: '操作',
|
||||||
|
@ -52,12 +52,12 @@
|
|||||||
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.总党支已评 -->
|
||||||
<lay-tag v-if="row.scoringrecord_status == 1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 1" type="primary" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评 </lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:nickname="{ row }">
|
<template v-slot:nickname="{ row }">
|
||||||
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
@ -167,12 +167,12 @@
|
|||||||
</lay-tab>
|
</lay-tab>
|
||||||
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评 </lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
||||||
@ -341,11 +341,21 @@
|
|||||||
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' },
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
} },
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
return row.self_score==''||row.self_score==0?'未评分':row.self_score;
|
||||||
|
} },
|
||||||
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
} },
|
||||||
|
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center', 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' },
|
||||||
])
|
])
|
||||||
@ -714,12 +724,24 @@
|
|||||||
{ 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' },
|
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
return row.user_scoringrecord==''||row.user_scoringrecord==0?'未评分':row.user_scoringrecord;
|
||||||
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center' },
|
} },
|
||||||
{ title: '党总支评分', width: '100px', key: 'overall_score_scoringrecord', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
return row.department_score_scoringrecord==''||row.department_score_scoringrecord==0?'未评分':row.department_score_scoringrecord;
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
} },
|
||||||
|
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.party_score_scoringrecord==''||row.party_score_scoringrecord==0?'未评分':row.party_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: '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: '操作',
|
||||||
|
@ -226,29 +226,54 @@ const columns = [
|
|||||||
title: '参评时间',
|
title: '参评时间',
|
||||||
width: '250px',
|
width: '250px',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'createtime'
|
key: 'createtime',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '自评总分',
|
title: '自评总分',
|
||||||
key: 'self_score',
|
key: 'self_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.self_score==''||row.self_score==0?'未参评':row.self_score;
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
title: '科室评分',
|
title: '科室评分',
|
||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
title: '党支部评分',
|
title: '党支部评分',
|
||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
title: '总党支评分',
|
title: '总党支评分',
|
||||||
key: 'department_score',
|
key: 'department_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.total_score==''||row.total_score==0?'未评分':row.total_score;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
, {
|
, {
|
||||||
title: '医院评分',
|
title: '医院评分',
|
||||||
key: 'hospital_score',
|
key: 'hospital_score',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.hospital_score==''||row.hospital_score==0?'未评分':row.hospital_score;
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
title: '总得分',
|
||||||
|
key: 'total_score',
|
||||||
|
align: 'center',
|
||||||
|
customSlot: ({row})=>{
|
||||||
|
return row.total_score==''||row.total_score==0?'未评分':row.total_score;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
@ -53,11 +53,11 @@
|
|||||||
</lay-form>
|
</lay-form>
|
||||||
</lay-card>
|
</lay-card>
|
||||||
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
<lay-table :page="page" height="600px" :columns="columns" :loading="loading" :data-source="dataSource"
|
||||||
@change="change">
|
@change="change" size="lg">
|
||||||
<template v-slot:type="{ row }">
|
<template v-slot:type="{ row }">
|
||||||
<lay-tag v-if="row.type == 1" type="primary">月度</lay-tag>
|
<lay-tag v-if="row.type == 1" type="primary" size="sm">月度</lay-tag>
|
||||||
<lay-tag v-if="row.type == 2" type="warm">季度</lay-tag>
|
<lay-tag v-if="row.type == 2" type="warm" size="sm">季度</lay-tag>
|
||||||
<lay-tag v-if="row.type == 3" type="danger">年度</lay-tag>
|
<lay-tag v-if="row.type == 3" type="danger" size="sm">年度</lay-tag>
|
||||||
<!-- <lay-tag v-if="row.scoringrecord_status == 4" type="danger">医院已评</lay-tag> -->
|
<!-- <lay-tag v-if="row.scoringrecord_status == 4" type="danger">医院已评</lay-tag> -->
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:group_evaluation="{ row }">
|
<template v-slot:group_evaluation="{ row }">
|
||||||
@ -72,7 +72,7 @@
|
|||||||
</lay-table>
|
</lay-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<lay-layer v-model="addShow" title="月度评价填报" :shade="true" :area="['500px', '500px']" :btn="addButton">
|
<lay-layer v-model="addShow" title="月度评价填报" :shade="true" :area="['600px', '600px']" :btn="addButton">
|
||||||
<lay-container fluid="true" style="padding: 20px">
|
<lay-container fluid="true" style="padding: 20px">
|
||||||
<div style="margin-bottom: 20px">填报月份:{{ addModel.term }}月</div>
|
<div style="margin-bottom: 20px">填报月份:{{ addModel.term }}月</div>
|
||||||
<div style="margin-bottom: 20px">评价对象:{{ addModel.nickname }}</div>
|
<div style="margin-bottom: 20px">评价对象:{{ addModel.nickname }}</div>
|
||||||
|
@ -52,12 +52,12 @@
|
|||||||
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.总党支已评 -->
|
||||||
<lay-tag v-if="row.scoringrecord_status == 1" type="primary">已自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 1" type="primary" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评 </lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:nickname="{ row }">
|
<template v-slot:nickname="{ row }">
|
||||||
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
<div style="color: #00A394;cursor: pointer" @click="openUserListShow(row)">{{ row.nickname }}</div>
|
||||||
@ -167,12 +167,12 @@
|
|||||||
</lay-tab>
|
</lay-tab>
|
||||||
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
<lay-table height="400px" :default-expand-all="true" :columns="userColumns" :data-source="userDataSource">
|
||||||
<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" size="sm">已自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 2">未自评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 2" size="sm">未自评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 3" type="warm">科室已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 3" type="warm" size="sm">科室已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 4" type="normal">医院已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 4" type="normal" size="sm">医院已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 5" color="blue">支部已评</lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 5" color="blue" size="sm">支部已评</lay-tag>
|
||||||
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033">总党支已评 </lay-tag>
|
<lay-tag v-if="row.scoringrecord_status == 6" color="#000033" size="sm">总党支已评 </lay-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operator="{ row }">
|
<template v-slot:operator="{ row }">
|
||||||
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
<span v-if="row.if == 2" style="color: #00A394;cursor: pointer"
|
||||||
@ -341,13 +341,27 @@
|
|||||||
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' },
|
{ title: '参评时间', width: '100px', key: 'createtime', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center' },
|
return row.createtime==''||row.createtime==null?'未参评':row.createtime;
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center' },
|
} },
|
||||||
{ title: '支部评分', width: '100px', key: 'party_branch_score', align: 'center' },
|
{ title: '自评总分', width: '100px', key: 'self_score', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '总党支评分', width: '100px', key: 'overall_party_score', align: 'center' },
|
return row.self_score==''||row.self_score==0?'未评分':row.self_score;
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score', align: 'center' },
|
} },
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.department_score==''||row.department_score==0?'未评分':row.department_score;
|
||||||
|
} },
|
||||||
|
{ title: '支部评分', width: '100px', key: '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: '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' },
|
||||||
])
|
])
|
||||||
@ -716,12 +730,24 @@
|
|||||||
{ 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' },
|
{ title: '自评总分', width: '100px', key: 'user_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center' },
|
return row.user_scoringrecord==''||row.user_scoringrecord==0?'未评分':row.user_scoringrecord;
|
||||||
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center' },
|
} },
|
||||||
{ title: '党总支评分', width: '100px', key: 'overall_score_scoringrecord', align: 'center' },
|
{ title: '科室评分', width: '100px', key: 'department_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
{ title: '医院评分', width: '100px', key: 'hospital_score_scoringrecord', align: 'center' },
|
return row.department_score_scoringrecord==''||row.department_score_scoringrecord==0?'未评分':row.department_score_scoringrecord;
|
||||||
{ title: '总得分', width: '100px', key: 'total_score', align: 'center' },
|
} },
|
||||||
|
{ title: '党支部评分', width: '100px', key: 'party_score_scoringrecord', align: 'center', customSlot: ({row})=>{
|
||||||
|
return row.party_score_scoringrecord==''||row.party_score_scoringrecord==0?'未评分':row.party_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: '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: '操作',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user