访客考勤记录对接完成

This commit is contained in:
xiayuping666
2024-06-03 17:17:18 +08:00
parent 9d82c89c66
commit 9df1378f8e
20 changed files with 573 additions and 22 deletions
+15
View File
@@ -176,6 +176,21 @@ export default {
icon: 'el-icon-tickets', icon: 'el-icon-tickets',
}, },
}, },
{
path: '/StudentSafetyAttendance/leavedRecord',
name: 'leavedRecord',
component: 'StudentSafetyAttendance/leavedRecord',
meta: {
title: 'message.router.leavedRecord',
isLink: '',
isHide: false,
isKeepAlive: true,
isAffix: false,
isIframe: false,
roles: ['admin', 'common'],
icon: 'el-icon-tickets',
},
},
{ {
path: '/StudentSafetyAttendance/SetAttendanceRules', path: '/StudentSafetyAttendance/SetAttendanceRules',
name: 'SetAttendanceRules', name: 'SetAttendanceRules',
+1
View File
@@ -32,6 +32,7 @@ export default {
ResponsiblePersonManagement:'ResponsiblePersonManagement', ResponsiblePersonManagement:'ResponsiblePersonManagement',
AttendanceForm:'AttendanceForm', AttendanceForm:'AttendanceForm',
StudentSafetyAttendance:'StudentSafetyAttendance', StudentSafetyAttendance:'StudentSafetyAttendance',
leavedRecord: 'leavedRecord',
SetAttendanceRules:'SetAttendanceRules', SetAttendanceRules:'SetAttendanceRules',
Inspect:'Inspect', Inspect:'Inspect',
MoralEducationEvaluation:'MoralEducationEvaluation', MoralEducationEvaluation:'MoralEducationEvaluation',
+1
View File
@@ -30,6 +30,7 @@ export default {
ccInformation:'配置', ccInformation:'配置',
AttendanceForm:'考勤表单', AttendanceForm:'考勤表单',
StudentSafetyAttendance:'学生安全考勤', StudentSafetyAttendance:'学生安全考勤',
leavedRecord: '请假记录',
SetAttendanceRules:'设置考勤规则', SetAttendanceRules:'设置考勤规则',
Inspect:'晨午检查', Inspect:'晨午检查',
roleManagement:'角色分配', roleManagement:'角色分配',
+1
View File
@@ -30,6 +30,7 @@ export default {
morningAndAfternoonInspectionManagement:"晨午检管理", morningAndAfternoonInspectionManagement:"晨午检管理",
AttendanceForm:'考勤表單', AttendanceForm:'考勤表單',
StudentSafetyAttendance:'學生安全考勤', StudentSafetyAttendance:'學生安全考勤',
leavedRecord: '請假記錄',
SetAttendanceRules:'設置考勤規則', SetAttendanceRules:'設置考勤規則',
Inspect:'晨午檢查', Inspect:'晨午檢查',
MoralEducationEvaluation:'德育評價', MoralEducationEvaluation:'德育評價',
+2
View File
@@ -221,6 +221,7 @@ export default {
case 0: case 0:
this.refreshCurrentTagsView(path); this.refreshCurrentTagsView(path);
this.$router.push({ path, query: currentTag.query }); this.$router.push({ path, query: currentTag.query });
console.log('======================')
break; break;
case 1: case 1:
this.closeCurrentTagsView(path); this.closeCurrentTagsView(path);
@@ -236,6 +237,7 @@ export default {
}, },
// 1、刷新当前 tagsView // 1、刷新当前 tagsView
refreshCurrentTagsView(path) { refreshCurrentTagsView(path) {
console.log('刷新当前 tagsView', path);
this.bus.$emit('onTagsViewRefreshRouterView', path); this.bus.$emit('onTagsViewRefreshRouterView', path);
}, },
// 2、关闭当前 tagsView:当前项 `tags-view` icon 关闭时点击,如果是设置了固定的(isAffix),不可以关闭 // 2、关闭当前 tagsView:当前项 `tags-view` icon 关闭时点击,如果是设置了固定的(isAffix),不可以关闭
@@ -2,7 +2,7 @@ import request from '@/utils/request'
// get获取列表 // get获取列表
export function getOrders (params) { export function getOrders (params) {
return request({ return request({
url: '/user-dept/user/visitor/list', url: '/manager/visitor',
method: 'get', method: 'get',
params: params params: params
}); });
@@ -8,7 +8,7 @@
<el-row :gutter="35"> <el-row :gutter="35">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20"> <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
<el-form-item label="到访时间"> <el-form-item label="到访时间">
<el-date-picker type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss" v-model="datePicker" placeholder="请选择查询时间" clearable></el-date-picker> <el-date-picker type="daterange" value-format="yyyy-MM-dd" v-model="datePicker" placeholder="请选择查询时间" clearable></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -75,7 +75,7 @@ import { postAddOrders, getOrders, putOrders } from './api'
import CommonHead from './components/CommonHead.vue' import CommonHead from './components/CommonHead.vue'
import CommonTablesImg from './components/CommonTablesImg.vue' import CommonTablesImg from './components/CommonTablesImg.vue'
export default { export default {
name: "CreatePayment",
data() { data() {
return { return {
form: { form: {
@@ -132,6 +132,12 @@ export default {
prop: "description", prop: "description",
type: 'text', type: 'text',
minWidth: '150' minWidth: '150'
},
{
label: "审批意见",
prop: "opinions",
type: 'text',
minWidth: '150'
} }
], ],
@@ -163,10 +169,15 @@ export default {
], ],
}, },
statusEnum:{ statusEnum:{
start: '开始', 0: {
terminate: '结束', name: '待审核',
agree:'同意', },
refuse: '拒绝', 1: {
name: '已通过',
},
2: {
name: '已拒绝',
}
}, },
datePicker: null, // 搜索日期 datePicker: null, // 搜索日期
} }
@@ -241,18 +252,16 @@ export default {
getList(){ getList(){
getOrders(this.query).then( res =>{ getOrders(this.query).then( res =>{
console.log(res) console.log(res)
this.data = res.data.records.map(item =>{ this.data = res.records.map(item =>{
item.status = this.statusEnum[item.status] item.status = this.statusEnum[item.status].name
item.faceImg ? item.faceImg = JSON.parse(item.faceImg)[0] : item.faceImg item.faceImg = item.faceImg
return item return item
}) })
this.total = res.data.total this.total = res.total
}) })
}, },
// 删除 // 删除
deleteData(item) { deleteData(item) {
console.log('------------------------------------------')
console.log(item)
deleteOrders().then(res =>{ deleteOrders().then(res =>{
if(res.code == 200){ if(res.code == 200){
@@ -51,7 +51,6 @@
import columns from "./columns"; import columns from "./columns";
import { rqObtainingSafetyAttendanceTeachers } from "../api"; import { rqObtainingSafetyAttendanceTeachers } from "../api";
export default { export default {
name: "AttendanceForm",
data() { data() {
return { return {
form: { form: {
@@ -173,7 +173,6 @@ import {
} from "../api"; } from "../api";
import InterestClassTabes from "./components/InterestClassTabes"; import InterestClassTabes from "./components/InterestClassTabes";
export default { export default {
name: "roleManagement",
data() { data() {
return { return {
checkList: [ checkList: [
@@ -0,0 +1,53 @@
import request from '@/utils/request'
// get获取列表
export function getOrders (params) {
return request({
url: '/manager/leave',
method: 'get',
params: params
});
}
// 新增
export function postAddOrders (data) {
return request({
url: '/meetingAct/info/add',
method: 'post',
data,
});
}
// 修改
export function putOrders (data) {
return request({
url: '/meetingAct/info/update',
method: 'put',
data,
});
}
// 删除
export function deleteOrders (id) {
return request({
url: '/meetingAct/info/delete',
method: 'delete',
params:{
id
}
});
}
// 获取审批人
export function getApprover () {
return request({
url: '/meetingAct/info/getTeacher',
method: 'get',
});
}
// 查询班级列表
export function getClass() {
return request({
url: '/meetingAct/moral/moral/evaluableGradeAndClassList',
method: 'get',
});
}
@@ -0,0 +1,44 @@
<template>
<div>
<el-button @click="resetClick" type="info" size="mini" icon="iconfont icon-biaodan"
>重置</el-button
>
<el-button @click="searchClick" type="warning" size="mini" icon="el-icon-search"
>搜索</el-button
>
<el-input
v-if="false"
v-model="searchData"
size="mini"
style="width: 20%"
placeholder="请输入搜索的关键字"
>
</el-input>
</div>
</template>
<script>
export default {
name: "CommonHead",
data() {
return {
searchData: "",
};
},
methods: {
newlyClick() {
// 在此处调用父组件传入的方法叫父组件做事情
this.$emit("newly-data");
},
resetClick() {
this.$emit("reset-data");
},
searchClick() {
this.$emit("search-data", this.searchData);
},
},
};
</script>
<style lang="scss" scoped></style>
@@ -0,0 +1,113 @@
<template>
<el-card class="box-card">
<el-table :data="tableData" style="width: 100%" height="650" size="mini">
<el-table-column
v-if="
column.label !== 'id' &&
column.label !== '审批人Id' &&
column.label !== '抄送人Id'
"
v-for="(column, index) in tableColumns"
:key="index"
:prop="column.prop"
:label="column.label"
:min-width="column.minWidth"
width="auto"
>
<template slot-scope="scope">
<span v-if="column.type === 'text'"> {{ scope.row[column.prop] }}</span>
<div v-else-if="column.type === 'image'">
<img style="width: 100px; height: 100px" :src="scope.row[column.prop]" />
</div>
</template>
</el-table-column>
<!-- <el-table-column align="center" fixed="right" label="操作" width="160">
<template slot-scope="scope">
<el-button
@click="handleEdit(scope.row)"
class="el-icon-edit"
type="text"
size="small"
>编辑</el-button
>
<el-popconfirm
@confirm="handleDelete(scope.row)"
:title="'确定要删除吗?'"
>
<el-button
slot="reference"
style="margin-left: 10px; color: red"
class="el-icon-delete"
type="text"
size="small"
>删除</el-button
>
</el-popconfirm>
</template>
</el-table-column> -->
</el-table>
</el-card>
</template>
<script>
export default {
name: "CommonTablesImg",
props: {
columns: {
type: Array,
required: true,
},
data: {
type: Array,
required: true,
},
deleteFunc: {
type: Function,
default: () => {},
},
editFunc: {
type: Function,
default: () => {},
},
},
data() {
return {};
},
methods: {
// 删除事件
handleDelete(row) {
this.deleteFunc(row.id);
},
// 编辑事件
handleEdit(row) {
console.log(row);
this.editFunc(row);
},
},
computed: {
tableColumns() {
// 处理传进来的列配置,返回符合 Element UI 表格要求的配置
return this.columns.map((column) => {
return {
label: column.label,
prop: column.prop,
type: column.type,
minWidth: column.minWidth ? column.minWidth : "",
};
});
},
tableData() {
// 处理传进来的数据,返回符合 Element UI 表格要求的数据
return this.data.map((rowData) => {
let row = {};
for (let column of this.columns) {
row[column.prop] = rowData[column.prop];
}
return row;
});
},
},
};
</script>
<style lang="scss" scoped></style>
@@ -0,0 +1,317 @@
<template>
<div>
<!-- 搜索 -->
<div class="form-adapt-container">
<el-card shadow="hover" header="">
<CommonHead @newly-data="fetchData" @reset-data="reset" @search-data="search" />
<el-form :model="query" size="small" label-width="100px" class="mt35 mb35">
<el-row :gutter="35">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
<el-form-item label="请假时间">
<el-date-picker type="daterange" value-format="yyyy-MM-dd" v-model="datePicker" placeholder="请选择查询时间" clearable></el-date-picker>
<!-- <el-date-picker type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss" v-model="datePicker" placeholder="请选择查询时间" clearable></el-date-picker> -->
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</div>
<!-- 表格 -->
<CommonTablesImg
:delete-func="deleteData"
:edit-func="editData"
:columns="columns"
:data="data"
></CommonTablesImg>
<Pagination
:total="total"
v-show="total > 0"
:current="query.current"
:size="query.size"
@clickCurrent="onClickCurrent"
@clickSize="onClickSize"
/>
<!-- 创建缴费 -->
<el-dialog :title="title" :visible.sync="isVisible" width="30%">
<el-form ref="form" :model="form" :rules="rules" label-width="80px" class="demo-ruleForm">
<el-form-item label="缴费标题" prop="subject">
<el-input size="mini" v-model="form.subject"></el-input>
</el-form-item>
<el-form-item label="缴费金额" prop="money">
<el-input size="mini" type="number" v-model="form.money"></el-input>
</el-form-item>
<el-form-item label="开始时间" prop="startTime">
<el-date-picker
v-model="form.startTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime" >
<el-date-picker
v-model="form.endTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="缴费说明" prop="explain">
<el-input size="mini" v-model="form.explain"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="isVisible = false"> </el-button>
<el-button size="mini" type="primary" @click="onClickSubmit">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { postAddOrders, getOrders, putOrders } from './api'
import CommonHead from './components/CommonHead.vue'
import CommonTablesImg from './components/CommonTablesImg.vue'
export default {
name: "leavedRecord",
data() {
return {
form: {
subject: null, // 缴费标题
money: null, // 金额
explain: null, // 缴费说明
startTime: null, // 开始时间
endTime: null, // 结束时间
},
columns: [
{
label: "id",
prop: "id",
type: 'text'
},
{
label: "班主任",
prop: "adviserName",
type: 'text'
},
{
label: "学生姓名",
prop: "studentName",
type: 'text'
},
{
label: "家长",
prop: "guardianName",
type: 'text'
},
{
label: "开始时间",
prop: "startTime",
type: 'text'
},
{
label: "结束时间",
prop: "endTime",
type: 'text'
},
{
label: "请假类型",
prop: "leaveType",
type: 'text'
},
{
label: "状态",
prop: "status",
type: 'text'
},
{
label: "到访说明",
prop: "description",
type: 'text',
minWidth: '150'
},
{
label: "审批意见",
prop: "opinions",
type: 'text',
minWidth: '150'
}
],
data: [],
query: {
current: 1,
size: 10,
startTime: null, // 开始时间
endTime: null, // 结束时间
},
total: 0, // 总页数
isVisible: false, // 弹出层
title: '新增', // 弹出层按钮
rules: {
subject: [
{ required: true, message: '请输入缴费标题', trigger: 'blur' },
],
money: [
{ required: true, message: '请输入缴费金额', trigger: 'blur' },
],
explain: [
{ required: true, message: '请输入缴费说明', trigger: 'blur' },
],
startTime: [
{ required: true, message: '请输入开始时间', trigger: 'blur' },
],
endTime: [
{ required: true, message: '请输入结束时间', trigger: 'blur' },
],
},
statusEnum:{
0: {
name: '待审核',
},
1: {
name: '已通过',
},
2: {
name: '已拒绝',
}
},
datePicker: null, // 搜索日期
}
},
components: {
CommonHead,
CommonTablesImg
},
created(){
this.getList()
},
mounted() {
console.log('无法执行')
},
methods:{
// 重置
// 点击确定提交
onClickSubmit(){
console.log(this.form)
let obj = { ...this.form }
this.$refs['form'].validate((valid) => {
if (valid) {
postAddOrders(obj).then(res =>{
if(res.code == 200){
this.getList()
this.resetForm()
this.message()
this.isVisible = false;
}else{
this.message(res.msg, 'error')
}
}).catch(err =>{
this.message(err.data.msg, 'error')
})
}
})
},
// 点击新增
fetchData() {
this.isVisible = true;
this.title = '新增'
this.resetForm()
},
// 重置按钮
reset() {
this.query = {
current: 1,
size: 10,
startTime: null, // 开始时间
endTime: null, // 结束时间
}
this.datePicker = null
this.getList()
},
// 重置表单
resetForm() {
this.form = {
money: null, // 金额
subject: null, // 缴费标题
explain: null, // 缴费说明
startTime: null, // 开始时间
endTime: null, // 结束时间
}
},
// 搜索按钮
search() {
this.query.current = 1
this.query.size = 10
console.log(this.datePicker)
this.query.startTime = this.datePicker[0]
this.query.endTime = this.datePicker[1]
this.getList()
},
// 获取数据
getList(){
getOrders(this.query).then( res =>{
console.log(res)
this.data = res.records.map(item =>{
item.status = this.statusEnum[item.status].name
item.faceImg = item.faceImg
return item
})
this.total = res.total
})
},
// 删除
deleteData(item) {
deleteOrders().then(res =>{
if(res.code == 200){
}else{
this.message(res.msg, 'error')
}
}).catch(err =>{
this.message(err.data.msg, 'error')
})
},
// 编辑
editData() {
this.isVisible = true;
this.title = '修改'
this.resetForm()
},
// 点击切换页数
onClickCurrent(current){
console.log( '点击切换页数' +current)
this.query.current = current
this.getList()
},
// 点击了每页页数
onClickSize(size){
this.size = size
this.query.size = size
this.getList()
console.log(size)
},
message(message = '新增成功',type = 'success'){ // type类型 success成功 warning警告 error错误
this.$message({
message,
type
});
}
}
};
</script>
<style lang="scss" scoped></style>
@@ -95,7 +95,6 @@ import { formatDate } from "@/com/index";
import CommonHead from "./components/CommonHead"; import CommonHead from "./components/CommonHead";
export default { export default {
name: "attendanceMachineEquipmentManagement",
data() { data() {
return { return {
columns, columns,
@@ -101,7 +101,6 @@ import CommonHead from "./components/CommonHead";
import CommonTables from "./components/CommonTables.vue"; import CommonTables from "./components/CommonTables.vue";
export default { export default {
name: "attendanceMachineEquipmentManagement",
data() { data() {
return { return {
columns, columns,
+1 -1
View File
@@ -210,7 +210,7 @@ const FlagEnum = {
let loading let loading
export default { export default {
name: "deviceManagement", name: "classList/classList",
data() { data() {
return { return {
columns, columns,
+1 -1
View File
@@ -260,7 +260,7 @@ const errorMessages = {
}; };
export default { export default {
name: "deviceManagement", name: "department",
data() { data() {
return { return {
columns, columns,
+1 -1
View File
@@ -115,7 +115,7 @@ import { formatDate } from "@/com/index";
import CommonHead from './components/CommonHead.vue' import CommonHead from './components/CommonHead.vue'
export default { export default {
name: "deviceManagement", name: "evaluate",
data() { data() {
return { return {
columns, columns,
-1
View File
@@ -218,7 +218,6 @@ import { formatDate } from "@/com/index";
import CommonHead from './components/CommonHead.vue' import CommonHead from './components/CommonHead.vue'
export default { export default {
name: "deviceManagement",
data() { data() {
return { return {
columns, columns,
+1 -1
View File
@@ -203,7 +203,7 @@ const FlagEnum = {
const FlagArr = ['INTO', 'OUT'] const FlagArr = ['INTO', 'OUT']
export default { export default {
name: "deviceManagement", name: "regulation",
data() { data() {
return { return {
columns, columns,