修复问题和编写因子图表

This commit is contained in:
jiangzhe 2024-04-29 11:04:56 +08:00
parent 364d65e17c
commit a9d30b70e7
12 changed files with 329 additions and 183 deletions

View File

@ -36,6 +36,24 @@ export const getWarnClass = (query: any): AxiosPromise<any[]> => {
}); });
}; };
export const getFactorAll = (query: any): AxiosPromise<any[]> => {
return request({
url: '/scale/statistic/factor/all',
method: 'get',
params: query
});
};
export const getFactorClass = (query: any): AxiosPromise<any[]> => {
return request({
url: '/scale/statistic/factor/class',
method: 'get',
params: query
});
};
export const getSchedule = (query: any): AxiosPromise<any[]> => { export const getSchedule = (query: any): AxiosPromise<any[]> => {
return request({ return request({
url: '/scale/publish/evaluation/pageList', url: '/scale/publish/evaluation/pageList',

View File

@ -0,0 +1,25 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
/**
*
* @param query
* @returns {*}
*/
export const listArchive = (query?: any): AxiosPromise<any[]> => {
return request({
url: '/scale/archive/pageList',
method: 'get',
params: query
});
};
export const listStatistic = (query?: any): AxiosPromise<any[]> => {
return request({
url: '/scale/archive/statistic/pageList',
method: 'get',
params: query
});
};

View File

@ -62,9 +62,9 @@ export interface SysScaleFactorForm extends BaseEntity {
*/ */
formulaId?: string | number; formulaId?: string | number;
questionIds:[], questionIds: any[],
factorRangeList:any[] factorRangeList: any[]
} }
export interface SysScaleFactorQuery extends PageQuery { export interface SysScaleFactorQuery extends PageQuery {
@ -94,10 +94,10 @@ export interface SysScaleFactorQuery extends PageQuery {
*/ */
formulaId?: string | number; formulaId?: string | number;
/** /**
* *
*/ */
params?: any; params?: any;
} }

View File

@ -1,18 +1,18 @@
<template> <template>
<div class="title">整体进度</div> <!-- <div class="title">整体进度</div>
<div style="margin-top: 10px;"> <div style="margin-top: 10px;">
<el-progress :text-inside="true" :stroke-width="26" :percentage="1" status="warning" /> <el-progress :text-inside="true" :stroke-width="26" :percentage="1" status="warning" />
</div> </div> -->
<el-card style="margin-top: 10px;"> <!-- <el-card style="margin-top: 10px;">
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
<span>气质类型测试量表(1/75)</span> <span>气质类型测试量表(1/75)</span>
</div> </div>
</template> </template>
<el-progress :text-inside="true" :stroke-width="26" :percentage="1" /> <el-progress :text-inside="true" :stroke-width="26" :percentage="1" />
</el-card> </el-card> -->
<el-card style="margin-top: 10px"> <el-card style="margin-top: 10px">
<template #header> <template #header>
@ -94,7 +94,6 @@
</template> </template>
<script setup> <script setup>
import api from "@/api/system/user"
import { getScalePublish } from '@/api/scale/scalePublish'; import { getScalePublish } from '@/api/scale/scalePublish';
import { getSchedule } from '@/api/activity/statistics' import { getSchedule } from '@/api/activity/statistics'
import { deptTreeSelect } from "@/api/system/user" import { deptTreeSelect } from "@/api/system/user"
@ -150,7 +149,9 @@ function handleQuery() {
} }
function resetQuery() { function resetQuery() {
queryFormRef.value.restFields() queryParams.value.scaleId = ''
queryParams.value.deptId = ''
handleQuery() handleQuery()
} }

View File

@ -80,23 +80,10 @@
</div> </div>
</template> </template>
<el-row justify="space-between"> <div class="chart-grid">
<el-col :span="8"> <v-chart v-for="item in factorDataList" style="height: 300px;" :option="item" autoresize />
<v-chart style="height: 300px;" :option="pieOption" autoresize /> </div>
</el-col>
<el-col :span="16">
<v-chart style="height: 300px;" :option="barOption" autoresize />
</el-col>
</el-row>
<el-row justify="center">
<el-table :data="completeTable" style="width: 100%;">
<el-table-column prop="name" :label="radio == 1 ? '年级' : '班级'" />
<el-table-column prop="join" label="参与人员" />
<el-table-column prop="finish" label="完成人数" />
<el-table-column prop="finishRate" label="完成率" />
</el-table>
</el-row>
</el-card> </el-card>
</el-row> </el-row>
</template> </template>
@ -106,7 +93,7 @@ import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { getScalePublish } from '@/api/scale/scalePublish'; import { getScalePublish } from '@/api/scale/scalePublish';
import { getCompleteAll, getCompleteClass, getWarnAll, getWarnClass } from '@/api/activity/statistics' import { getCompleteAll, getCompleteClass, getWarnAll, getWarnClass, getFactorAll, getFactorClass } from '@/api/activity/statistics'
import { use } from 'echarts/core' import { use } from 'echarts/core'
import { CanvasRenderer } from "echarts/renderers"; import { CanvasRenderer } from "echarts/renderers";
@ -296,19 +283,53 @@ async function getwarnData() {
warBarOption.value.series = seriesData warBarOption.value.series = seriesData
} }
//
const factorDataList = ref([])
const factorNameList = ref([])
async function getFactoryData() {
const query = { batchNo, scaleId: scaleId.value }
let res = {}
if (radio.value == 1) {
res = await getFactorAll(query)
}
if (radio.value == 2) {
res = await getFactorClass(query)
}
const factoryList = res.data
factoryList.forEach(item => {
factorNameList.value.push(item.factorName)
const pieData = []
item.numList.forEach(numItem => {
pieData.push({
name: numItem.name,
value: numItem.value
})
})
factorDataList.value.push(initPieOption(item.factorName, pieData))
})
}
watch([scaleId, radio], ([newVal, oldVal]) => { watch([scaleId, radio], ([newVal, oldVal]) => {
completeTable.value = [] completeTable.value = []
getCompleteData() getCompleteData()
warnTable.value = [] warnTable.value = []
getwarnData() getwarnData()
getFactoryData()
}) })
onMounted(() => { onMounted(() => {
getScalePublishList() getScalePublishList()
}) })
function initPieOption(name, data) { function initPieOption(name = '', data) {
return { return {
tooltip: { tooltip: {
trigger: 'item' trigger: 'item'
@ -362,4 +383,9 @@ function percentage(number1, number2) {
.h { .h {
height: 300px; height: 300px;
} }
.chart-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
</style> </style>

View File

@ -23,14 +23,14 @@
<el-card shadow="never"> <el-card shadow="never">
<template #header> <template #header>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" <el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['scale:warnRecord:add']">批量导入档案</el-button> v-hasPermi="['scale:warnRecord:add']">批量导入档案</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
v-hasPermi="['scale:warnRecord:edit']">下载档案导入模板</el-button> v-hasPermi="['scale:warnRecord:edit']">下载档案导入模板</el-button>
</el-col> </el-col> -->
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
v-hasPermi="['scale:warnRecord:remove']">删除</el-button> v-hasPermi="['scale:warnRecord:remove']">删除</el-button>
@ -43,30 +43,23 @@
</el-row> </el-row>
</template> </template>
<el-table v-loading="loading" :data="warnRecordList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="archiveList">
<el-table-column type="selection" width="55" align="center" /> <el-table-column label="姓名" align="center" prop="nickName" />
<el-table-column label="用户名" align="center" prop="batchNo" /> <el-table-column label="性别" align="center" prop="sex">
<el-table-column label="姓名" align="center" prop="userId" /> <template #default="scope">
<el-table-column label="性别" align="center" prop="note" /> <el-tag :type="scope.row.sex === '0' ? 'success' : 'danger'" size="small">
<el-table-column label="年级" align="center" prop="note" /> {{ scope.row.sex === '0' ? '男' : '女' }}
<el-table-column label="班级" align="center" prop="note" /> </el-tag>
<el-table-column label="民族" align="center" prop="note" /> </template>
<el-table-column label="籍贯" align="center" prop="note" /> </el-table-column>
<el-table-column label="手机号码" align="center" prop="note" /> <el-table-column label="年级" align="center" prop="deptName" />
<el-table-column label="家族地址" align="center" prop="note" /> <el-table-column label="手机号码" align="center" prop="phonenumber" />
<el-table-column label="家族地址" align="center" prop="address" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="查看" placement="top"> <el-tooltip content="查看" placement="top">
<el-button link type="primary" icon="View" @click="handleUpdate(scope.row)" <el-button link type="primary" icon="View" @click="handleUpdate(scope.row)"
v-hasPermi="['scale:warnRecord:edit']"></el-button> v-hasPermi="['scale:warnRecord:edit']">查看</el-button>
</el-tooltip>
<el-tooltip content="编辑" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['scale:warnRecord:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['scale:warnRecord:remove']"></el-button>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
@ -78,7 +71,7 @@
<!-- 添加或修改预警记录对话框 --> <!-- 添加或修改预警记录对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body> <el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
<el-tabs v-model="activeName" class="demo-tabs"> <el-tabs v-model="activeName" class="demo-tabs">
<el-tab-pane label="基本信息" name="first"> <!-- <el-tab-pane label="基本信息" name="first">
<el-form ref="informationFormRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="informationFormRef" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -136,28 +129,30 @@
<el-table-column prop="name" label="Name" width="180" /> <el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" /> <el-table-column prop="address" label="Address" />
</el-table> </el-table>
</el-tab-pane> -->
<el-tab-pane label="静态普查记录" name="static">
<el-table :data="staticList" style="width: 100%">
<el-table-column prop="sessionName" label="场次名称" />
<el-table-column prop="scaleName" label="量表名称" />
<el-table-column prop="situation" label="严重度" />
</el-table>
<pagination v-show="staticTotal > 0" :total="staticTotal" v-model:page="staticQuery.pageNum"
v-model:limit="staticQuery.pageSize" @pagination="getStaticList" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="静态普查记录" name="third"> <!-- <el-tab-pane label="动态普查记录" name="dynamic">
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180" /> <el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" /> <el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" /> <el-table-column prop="address" label="Address" />
</el-table> </el-table>
</el-tab-pane> </el-tab-pane> -->
<el-tab-pane label="动态普查记录" name="fourth"> <!-- <el-tab-pane label="预警干预记录" name="warn">
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180" /> <el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" /> <el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" /> <el-table-column prop="address" label="Address" />
</el-table> </el-table>
</el-tab-pane> </el-tab-pane> -->
<el-tab-pane label="预警干预记录" name="five">
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
</el-table>
</el-tab-pane>
</el-tabs> </el-tabs>
<template #footer> <template #footer>
@ -171,12 +166,11 @@
</template> </template>
<script setup name="WarnRecord" lang="ts"> <script setup name="WarnRecord" lang="ts">
import { listWarnRecord, getWarnRecord, delWarnRecord, addWarnRecord, updateWarnRecord } from '@/api/archive/warnRecord'; import { listArchive, listStatistic } from '@/api/archive/information';
import { WarnRecordVO, WarnRecordQuery, WarnRecordForm } from '@/api/archive/warnRecord/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const warnRecordList = ref<WarnRecordVO[]>([]); const archiveList = ref<any[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
const loading = ref(true); const loading = ref(true);
const showSearch = ref(true); const showSearch = ref(true);
@ -193,7 +187,7 @@ const dialog = reactive<DialogOption>({
title: '' title: ''
}); });
const activeName = ref('first') const activeName = ref('static')
const tableData = [ const tableData = [
{ {
@ -218,46 +212,19 @@ const tableData = [
}, },
] ]
const initFormData: WarnRecordForm = { const initFormData: any = {
warnId: undefined,
batchNo: undefined,
userId: undefined,
status: undefined,
note: undefined,
warnTime: undefined
} }
const data = reactive<PageData<WarnRecordForm, WarnRecordQuery>>({ const data = reactive<PageData<any, any>>({
form: { ...initFormData }, form: { ...initFormData },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
batchNo: undefined,
userId: undefined,
status: undefined,
note: undefined,
warnTime: undefined,
params: { params: {
} }
}, },
rules: { rules: {
warnId: [
{ required: true, message: "不能为空", trigger: "blur" }
],
batchNo: [
{ required: true, message: "td_scale_publish表主键不能为空", trigger: "blur" }
],
userId: [
{ required: true, message: "测评人id不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "状态 0 未处理1 分配咨询师2 咨询师拒绝干预3 干预中 4 干预结束不能为空", trigger: "change" }
],
note: [
{ required: true, message: "补充说明不能为空", trigger: "blur" }
],
warnTime: [
{ required: true, message: "预警时间不能为空", trigger: "blur" }
]
} }
}); });
@ -266,8 +233,8 @@ const { queryParams, form, rules } = toRefs(data);
/** 查询预警记录列表 */ /** 查询预警记录列表 */
const getList = async () => { const getList = async () => {
loading.value = true; loading.value = true;
const res = await listWarnRecord(queryParams.value); const res = await listArchive(queryParams.value);
warnRecordList.value = res.rows; archiveList.value = res.rows;
total.value = res.total; total.value = res.total;
loading.value = false; loading.value = false;
} }
@ -296,13 +263,6 @@ const resetQuery = () => {
handleQuery(); handleQuery();
} }
/** 多选框选中数据 */
const handleSelectionChange = (selection: WarnRecordVO[]) => {
ids.value = selection.map(item => item.warnId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */ /** 新增按钮操作 */
const handleAdd = () => { const handleAdd = () => {
reset(); reset();
@ -310,25 +270,42 @@ const handleAdd = () => {
dialog.title = "添加预警记录"; dialog.title = "添加预警记录";
} }
const staticQuery = ref({
userId: '',
pageNum: 1,
pageSize: 10
})
const staticTotal = ref(0)
const staticList = ref<any[]>([])
/** 修改按钮操作 */ /** 修改按钮操作 */
const handleUpdate = async (row?: WarnRecordVO) => { const handleUpdate = async (row?: any) => {
reset(); reset();
const _warnId = row?.warnId || ids.value[0] staticQuery.value.userId = row.userId;
const res = await getWarnRecord(_warnId); getStaticList()
Object.assign(form.value, res.data);
// const _warnId = row?.warnId || ids.value[0]
// const res = await getWarnRecord(_warnId);
// Object.assign(form.value, res.data);
dialog.visible = true; dialog.visible = true;
dialog.title = "修改预警记录"; dialog.title = "修改预警记录";
} }
async function getStaticList() {
const res = await listStatistic(staticQuery.value);
staticList.value = res.rows
staticTotal.value = res.total
}
/** 提交按钮 */ /** 提交按钮 */
const submitForm = () => { const submitForm = () => {
informationFormRef.value?.validate(async (valid: boolean) => { informationFormRef.value?.validate(async (valid: boolean) => {
if (valid) { if (valid) {
buttonLoading.value = true; buttonLoading.value = true;
if (form.value.warnId) { if (form.value.warnId) {
await updateWarnRecord(form.value).finally(() => buttonLoading.value = false); // await updateWarnRecord(form.value).finally(() => buttonLoading.value = false);
} else { } else {
await addWarnRecord(form.value).finally(() => buttonLoading.value = false); // await addWarnRecord(form.value).finally(() => buttonLoading.value = false);
} }
proxy?.$modal.msgSuccess("修改成功"); proxy?.$modal.msgSuccess("修改成功");
dialog.visible = false; dialog.visible = false;
@ -337,21 +314,6 @@ const submitForm = () => {
}); });
} }
/** 删除按钮操作 */
const handleDelete = async (row?: WarnRecordVO) => {
const _warnIds = row?.warnId || ids.value;
await proxy?.$modal.confirm('是否确认删除预警记录编号为"' + _warnIds + '"的数据项?').finally(() => loading.value = false);
await delWarnRecord(_warnIds);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('scale/warnRecord/export', {
...queryParams.value
}, `warnRecord_${new Date().getTime()}.xlsx`)
}
onMounted(() => { onMounted(() => {
getList(); getList();

View File

@ -4,19 +4,15 @@
:leave-active-class="proxy?.animate.searchAnimate.leave"> :leave-active-class="proxy?.animate.searchAnimate.leave">
<div class="search" v-show="showSearch"> <div class="search" v-show="showSearch">
<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item label="测评人" prop="batchNo"> <el-form-item label="测评人" prop="nickName">
<el-input v-model="queryParams.batchNo" placeholder="请输入测评人" clearable style="width: 240px" <el-input v-model="queryParams.nickName" placeholder="请输入测评人" clearable style="width: 240px"
@keyup.enter="handleQuery" /> @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="note"> <el-form-item label="状态" prop="interveneStatus">
<el-select v-model="queryParams.status" placeholder="请选状态" style="width: 240px"> <el-select v-model="queryParams.interveneStatus" placeholder="请选状态" style="width: 240px">
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="预警时间" prop="note">
<el-date-picker clearable v-model="queryParams.warnTime" type="date" value-format="YYYY-MM-DD"
placeholder="请选预警时间" />
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@ -34,6 +30,12 @@
<span>{{ parseTime(scope.row.warnTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.warnTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态" align="center" prop="interveneStatus" width="180">
<template #default="scope">
<el-tag :type="scope.row.interveneStatus === 0 ? 'success' : 'danger'">{{ scope.row.interveneStatus === 0 ?
'无须干预' : '干预中' }}</el-tag>
</template>
</el-table-column>
<el-table-column label="补充说明" align="center" prop="note" /> <el-table-column label="补充说明" align="center" prop="note" />
<el-table-column label="操作" align="center" class-name="small-padding" width="280"> <el-table-column label="操作" align="center" class-name="small-padding" width="280">
@ -107,11 +109,8 @@ const warnRecordFormRef = ref<ElFormInstance>();
// 0 1 2 3 4 // 0 1 2 3 4
const statusOptions = [ const statusOptions = [
{ label: '未处理', value: 0 }, { label: '无须干预', value: 0 },
{ label: '分配咨询师', value: 1 }, { label: '干预中', value: 1 }
{ label: '咨询师拒绝干预', value: 2 },
{ label: '干预中', value: 3 },
{ label: '干预结束', value: 4 },
] ]
const dialog = reactive<DialogOption>({ const dialog = reactive<DialogOption>({
@ -127,7 +126,9 @@ const initFormData: WarnRecordForm = {
userId: undefined, userId: undefined,
status: undefined, status: undefined,
note: undefined, note: undefined,
warnTime: undefined warnTime: undefined,
nickName: undefined,
interveneStatus: undefined
} }
const data = reactive<PageData<WarnRecordForm, WarnRecordQuery>>({ const data = reactive<PageData<WarnRecordForm, WarnRecordQuery>>({
form: { ...initFormData }, form: { ...initFormData },
@ -139,6 +140,8 @@ const data = reactive<PageData<WarnRecordForm, WarnRecordQuery>>({
status: undefined, status: undefined,
note: undefined, note: undefined,
warnTime: undefined, warnTime: undefined,
nickName: undefined,
interveneStatus: undefined,
params: { params: {
} }
}, },

View File

@ -44,7 +44,13 @@
<div class="item item6 panel"> <div class="item item6 panel">
<h2>心理咨询师</h2> <h2>心理咨询师</h2>
<div class="chart"></div> <div class="chart">
<el-table :data="tableData" :header-cell-style="headerCellStyle" :cell-style="cellStyle">
<el-table-column prop="date" label="姓名" />
<el-table-column prop="name" label="专业资质" />
<el-table-column prop="address" label="擅长方向" />
</el-table>
</div>
<div class="panel-footer"></div> <div class="panel-footer"></div>
</div> </div>
@ -98,6 +104,51 @@ function time() {
showTime.value = y + "年" + mt + "月" + day + "日" + h + "时" + m + "分" + s + "秒"; showTime.value = y + "年" + mt + "月" + day + "日" + h + "时" + m + "分" + s + "秒";
} }
const tableData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
const headerCellStyle = ({ row, column, rowIndex, columnIndex }) => {
if (rowIndex % 2 == 0) {
return {
backgroundColor: '#082187',
fontSize: '0.25rem'
}
} else {
return {
backgroundColor: '#0A27A8',
fontSize: '0.25rem'
}
}
}
const cellStyle = ({ row, column, rowIndex, columnIndex }) => {
return {
backgroundColor: '#10215D',
color: '#fff',
fontSize: '0.25rem'
}
}
onMounted(() => { onMounted(() => {
time() time()
@ -458,5 +509,23 @@ li {
} }
} }
/* 设置表格的背景颜色 */
:deep(.el-table) {
background-color: #f0f0f0;
/* 替换为你想要的颜色 */
}
/* 设置表格行的背景颜色 */
:deep(.el-table__row) {
background-color: #ffffff;
/* 替换为你想要颜色 */
}
/* 设置表格头的背景颜色 */
:deep(.el-table__header-wrapper th) {
background-color: #e0e0e0;
/* 替换为你想要颜色 */
}
} }
</style> </style>

View File

@ -8,14 +8,10 @@
<el-input v-model="queryParams.scaleNames" placeholder="请输入量表名称 以逗号隔开" clearable style="width: 240px" <el-input v-model="queryParams.scaleNames" placeholder="请输入量表名称 以逗号隔开" clearable style="width: 240px"
@keyup.enter="handleQuery" /> @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="sessionName"> <el-form-item label="场次名称" prop="sessionName">
<el-input v-model="queryParams.sessionName" placeholder="请输入场次名称" clearable style="width: 240px" <el-input v-model="queryParams.sessionName" placeholder="请输入场次名称" clearable style="width: 240px"
@keyup.enter="handleQuery" /> @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="发布时间" prop="deptId">
<el-input v-model="queryParams.deptId" placeholder="请输入部门分组id" clearable style="width: 240px"
@keyup.enter="handleQuery" />
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@ -35,7 +31,7 @@
<el-table-column label="场次名称" align="center" prop="sessionName" /> <el-table-column label="场次名称" align="center" prop="sessionName" />
<el-table-column label="量表名称 以逗号隔开" align="center" prop="scaleNames" /> <el-table-column label="量表名称 以逗号隔开" align="center" prop="scaleNames" />
<el-table-column label="部门名称" align="center" prop="deptId" /> <el-table-column label="部门名称" align="center" prop="deptNames" />
<el-table-column label="截止日期" align="center" prop="expireTime" width="180"> <el-table-column label="截止日期" align="center" prop="expireTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.expireTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.expireTime, '{y}-{m}-{d}') }}</span>

View File

@ -187,6 +187,12 @@
<el-checkbox v-for="item in scaleQuestionList" :key="item.questionId" :label="item.questionOrder" <el-checkbox v-for="item in scaleQuestionList" :key="item.questionId" :label="item.questionOrder"
:value="item.questionId" /> :value="item.questionId" />
</el-checkbox-group> </el-checkbox-group>
<template #footer>
<div class="dialog-footer">
<el-button @click="handlQuestionCancel">取消</el-button>
<el-button type="primary" @click="handleQuestionAll">全选</el-button>
</div>
</template>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -277,9 +283,7 @@ const data = reactive<PageData<SysScaleFactorForm, SysScaleFactorQuery>>({
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
function handleSelectQuestion() {
questionVisible.value = true
}
/** 查询测评因子列表 */ /** 查询测评因子列表 */
const getList = async () => { const getList = async () => {
@ -414,6 +418,18 @@ const questionChooseList = computed(() => {
return scaleQuestionList.value.filter(item => form.value.questionIds.includes(item.questionId)) return scaleQuestionList.value.filter(item => form.value.questionIds.includes(item.questionId))
}) })
function handleSelectQuestion() {
questionVisible.value = true
}
function handleQuestionAll() {
form.value.questionIds = scaleQuestionList.value.map(item => item.questionId)
}
function handlQuestionCancel() {
form.value.questionIds = []
}
const yzdList = ref<DictDataVO[]>([]) const yzdList = ref<DictDataVO[]>([])
async function getYzdList() { async function getYzdList() {
const res = await getDicts('yzd') const res = await getDicts('yzd')
@ -450,4 +466,9 @@ onMounted(() => {
font-weight: bold; font-weight: bold;
} }
} }
.el-checkbox-group {
display: grid;
grid-template-columns: repeat(10, 1fr);
}
</style> </style>

View File

@ -111,8 +111,8 @@
</el-form-item> </el-form-item>
<el-form-item label="归属部门" prop="deptIds"> <el-form-item label="归属部门" prop="deptIds">
<el-tree-select v-model="form.deptIds" :data="deptOptions" <el-tree-select v-model="form.deptIds" :data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" placeholder="请选择归属部门" multiple :props="{ value: 'id', label: 'label', children: 'children' }" node-key="id" placeholder="请选择归属部门" multiple
show-checkbox /> show-checkbox @change="deptChange" />
</el-form-item> </el-form-item>
<el-form-item label="量表" prop="scaleIds"> <el-form-item label="量表" prop="scaleIds">
<el-select multiple v-model="form.scaleIds" placeholder="请选择量表" style="width: 100%"> <el-select multiple v-model="form.scaleIds" placeholder="请选择量表" style="width: 100%">
@ -252,7 +252,7 @@ const getTreeSelect = async () => {
deptOptions.value = res.data; deptOptions.value = res.data;
}; };
const scaleOptions = ref([]); const scaleOptions = ref<any[]>([]);
const getScaleOptions = async () => { const getScaleOptions = async () => {
const res = await findAll(); const res = await findAll();
scaleOptions.value = res.data; scaleOptions.value = res.data;
@ -265,15 +265,50 @@ watch(() => dialog.visible, (visible) => {
} }
}) })
const questionList = ref([]) const questionList = ref<any[]>([])
async function handleDetail(row: any) {
async function handleDetail(row) {
console.log('handleDetail', row.scaleId); console.log('handleDetail', row.scaleId);
const res = await findByScaleId({ scaleId: row.scaleId }) const res = await findByScaleId({ scaleId: row.scaleId })
questionList.value = res.data questionList.value = res.data
detailVisible.value = true detailVisible.value = true
} }
function deptChange() {
console.log('deptChange', treeToList(deptOptions.value));
}
function treeToList(treeData) {
const result = [];
function traverse(node) {
//
result.push({
id: node.id,
label: node.label,
parentId: node.parentId
});
//
if (node.children && node.children.length > 0) {
for (const child of node.children) {
traverse(child);
}
}
}
//
if (Array.isArray(treeData)) {
for (const root of treeData) {
traverse(root);
}
} else {
//
traverse(treeData);
}
return result;
}
onMounted(() => { onMounted(() => {
getList() getList()
getScaleTypeList() getScaleTypeList()

View File

@ -10,7 +10,7 @@
</template> </template>
<div> <div>
<div class="text-center"> <div class="text-center">
<userAvatar/> <userAvatar />
</div> </div>
<ul class="list-group list-group-striped"> <ul class="list-group list-group-striped">
<li class="list-group-item"> <li class="list-group-item">
@ -27,7 +27,8 @@
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="tree" />所属部门 <svg-icon icon-class="tree" />所属部门
<div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}</div> <div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}
</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色 <svg-icon icon-class="peoples" />所属角色
@ -55,9 +56,6 @@
<el-tab-pane label="修改密码" name="resetPwd"> <el-tab-pane label="修改密码" name="resetPwd">
<resetPwd /> <resetPwd />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="第三方应用" name="thirdParty">
<thirdParty :auths="state.auths" />
</el-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
</el-col> </el-col>
@ -69,35 +67,27 @@
import UserAvatar from "./userAvatar.vue"; import UserAvatar from "./userAvatar.vue";
import UserInfo from "./userInfo.vue"; import UserInfo from "./userInfo.vue";
import ResetPwd from "./resetPwd.vue"; import ResetPwd from "./resetPwd.vue";
import ThirdParty from "./thirdParty.vue";
import { getAuthList } from "@/api/system/social/auth";
import { getUserProfile } from "@/api/system/user"; import { getUserProfile } from "@/api/system/user";
const activeTab = ref("userinfo"); const activeTab = ref("userinfo");
const state = ref<Record<string, any>>({ const state = ref<Record<string, any>>({
user: {}, user: {},
roleGroup: '', roleGroup: '',
postGroup: '', postGroup: '',
auths: [] auths: []
}); });
const userForm = ref({}); const userForm = ref({});
const getUser = async () => { const getUser = async () => {
const res = await getUserProfile(); const res = await getUserProfile();
state.value.user = res.data.user; state.value.user = res.data.user;
userForm.value = { ...res.data.user } userForm.value = { ...res.data.user }
state.value.roleGroup = res.data.roleGroup; state.value.roleGroup = res.data.roleGroup;
state.value.postGroup = res.data.postGroup; state.value.postGroup = res.data.postGroup;
};
const getAuths = async () => {
const res = await getAuthList();
state.value.auths = res.data;
}; };
onMounted(() => { onMounted(() => {
getUser(); getUser();
getAuths();
}) })
</script> </script>