This commit is contained in:
曹辉 2023-04-14 17:26:56 +08:00
parent b6468ff3a3
commit d767853f3a
7 changed files with 810 additions and 3 deletions

View File

@ -0,0 +1,9 @@
import request from '@/utils/request'
// 查询
export function appletVisitRecord(pageNum, pageSize, parentInfoId, kindergartenId, startDate, endDate, loginType) {
return request({
url: `/system/appLogManage/appletVisitRecord?pageNum=${pageNum}&pageSize=${pageSize}&parentInfoId=${parentInfoId}&kindergartenId=${kindergartenId}&startDate=${startDate}&endDate=${endDate}&loginType=${loginType}`,
method: 'post',
})
}

View File

@ -0,0 +1,178 @@
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="所属班级" prop="className">
<el-button
@click="classshow = true"
v-if="className == '请选择班级'"
style="
width: 230px;
text-align: left;
height: 32px;
color: #c0c4cc;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
"
>{{ className }}</el-button>
<el-button
@click="classshow = true"
style="width: 230px; text-align: left; height: 32px; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;"
v-else
>{{ className }}</el-button>
</el-form-item>
</el-form>
<!-- // -->
<el-dialog
width="900px"
title="选择班级"
:visible.sync="classshow"
append-to-body
:before-close="classcancel"
>
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="110px">
<el-form-item label="幼儿园名称" prop="kindergartenName">
<el-input
style="width: 200px"
v-model="classqueryParams.kindergartenName"
placeholder="请输入幼儿园名称"
></el-input>
</el-form-item>
<el-form-item label="班级名称" prop="className">
<el-input style="width: 200px" v-model="classqueryParams.className" placeholder="请输入班级名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="classhandleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="classresetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="classList" @cell-dblclick="classclick">
<el-table-column label="请选择" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="classclick(scope.row)"
v-if="classId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="classclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column property="kindergartenName" label="所属幼儿园" align="center"></el-table-column>
<el-table-column property="className" label="班级名称" align="center"></el-table-column>
<el-table-column property="classType" label="班级类型" align="center"></el-table-column>
<el-table-column property="classTeacher" label="班主任姓名" align="center"></el-table-column>
<el-table-column property="phone" label="联系电话" align="center"></el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="classqueryParams.pageNum"
:limit.sync="classqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
</div>
</template>
<script>
import { listClassinfo } from "@/api/system/classinfo";
import { getRoleInfo } from "@/api/system/quality";
export default {
name: "classe",
components: {},
data() {
return {
total1: 0,
//
classshow: false,
//
showSearch: true,
//
form: {},
//
classqueryParams: {
pageNum: 1,
pageSize: 10,
className: null,
kindergartenName: null,
phone: null
},
//list
classList: [],
//
className: "请选择班级",
//ID
classId: ""
};
},
mounted() {},
created() {
this.getList();
this.onshow();
},
methods: {
onshow() {
this.classId = localStorage.getItem("classId");
if (localStorage.getItem("className") == null) {
this.className = "请选择班级";
} else {
this.className = localStorage.getItem("className");
}
this.$emit("classelist", this.classId);
},
//
classclick(row) {
this.className = row.className;
this.classId = row.id;
this.classshow = false;
localStorage.setItem("className", this.className);
localStorage.setItem("classId", this.classId);
this.$emit("classelist", this.classId, 1);
},
//
classcancel() {
this.classshow = false;
this.classresetQuery();
},
//
classhandleQuery() {
this.getList();
},
classresetQuery() {
this.classqueryParams = {
pageNum: 1,
pageSize: 10,
organizeId: null,
className: null,
phone: null,
contacts: null
};
this.classhandleQuery();
},
getList() {
//list
listClassinfo(this.classqueryParams).then(response => {
this.classList = response.rows;
this.total1 = response.total;
});
},
//
reset() {
this.form = {};
this.resetForm("form");
}
}
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
</style>

View File

@ -0,0 +1,203 @@
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item :label="kindergartitle" prop="kindergartenName">
<el-button
@click="kindergartenshow = true"
v-if="kindergartenName == '请选择幼儿园'"
class="btn"
style="color: #c0c4cc;"
>{{ kindergartenName }}</el-button>
<el-button @click="kindergartenshow = true" class="btn" v-else>{{ kindergartenName }}</el-button>
</el-form-item>
</el-form>
<!-- // -->
<el-dialog
width="900px"
title="选择所属幼儿园"
:visible.sync="kindergartenshow"
append-to-body
:before-close="kindergartencancel"
>
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="110px">
<el-form-item label="幼儿园名称" prop="kindergartenName">
<el-input
style="width: 200px"
v-model="kqueryParams.kindergartenName"
placeholder="请输入幼儿园名称"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="kinhandleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="kinresetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="kindergartenList" @cell-dblclick="kindergartenNameclick">
<el-table-column label="请选择" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
v-if="kindergartenId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="kindergartenNameclick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column property="kindergartenName" label="幼儿园名字" align="center"></el-table-column>
<el-table-column property="kindergartenAddress" label="幼儿园地址" align="center"></el-table-column>
<el-table-column label="幼儿园所在组织" align="center" prop="organizeName"></el-table-column>
<el-table-column property="contacts" label="联系人" align="center"></el-table-column>
<el-table-column property="phone" label="联系电话" align="center"></el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="kqueryParams.pageNum"
:limit.sync="kqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
</div>
</template>
<script>
import {
listKindergartenInfo,
tKindergartenInfo
} from "@/api/system/kindergartenInfo";
import { getRoleInfo } from "@/api/system/quality";
export default {
name: "kindergar",
components: {},
data() {
return {
kindergartitle: "所属幼儿园",
total1: 0,
//
kindergartenshow: false,
//
showSearch: true,
//
form: {},
//
kqueryParams: {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null
},
//list
kindergartenList: [],
//
kindergartenName: "请选择幼儿园",
//ID
kindergartenId: ""
};
},
mounted() {},
created() {
this.getList();
this.onshow();
},
methods: {
onshow() {
// this.kindergartenId = localStorage.getItem("kindergarId");
if (localStorage.getItem("kindergarName") == null) {
this.kindergartenName = "请选择幼儿园";
} else {
// this.kindergartenName = localStorage.getItem("kindergarName");
}
this.$emit("kinbatlist", this.kindergartenId);
},
//
kindergartenNameclick(row) {
this.kindergartenName = row.kindergartenName;
this.kindergartenId = row.id;
this.kindergartenshow = false;
localStorage.setItem("kindergarName", this.kindergartenName);
// localStorage.setItem("kindergarId", this.kindergartenId);
this.$emit("kinbatlist", this.kindergartenId, 1);
},
//
kindergartencancel() {
this.kindergartenshow = false;
this.kinresetQuery();
},
kinhandleQuery() {
//list
listKindergartenInfo(this.kqueryParams).then(response => {
this.kindergartenList = response.rows;
this.total1 = response.total;
});
},
kinresetQuery() {
this.kqueryParams = {
pageNum: 1,
pageSize: 10,
organizeId: null,
kindergartenName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null
};
this.kinhandleQuery();
},
getList() {
//
// getRoleInfo().then(res => {
// var user = res.data.roleKeys;
// if (user.includes("enchou")) {
// return;
// } else if (user.includes("teacher")) {
// if (res.data != 999999) {
// this.kindergartenId = res.data.kindergartenId;
// this.kindergartenName = res.data.kindergartenName;
// this.$emit("kinbatlist", this.kindergartenId, 0);
// localStorage.setItem("kindergarName", res.data.kindergartenName);
// localStorage.setItem("kindergarId", res.data.kindergartenId);
// }
// return;
// } else if (user.includes("parent")) {
// return;
// }
// });
//list
listKindergartenInfo(this.kqueryParams).then(response => {
this.kindergartenList = response.rows;
this.total1 = response.total;
});
},
//
reset() {
this.kindergartenName = "请选择幼儿园";
this.kindergartenId = "";
}
}
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
.btn {
width: 230px;
text-align: left;
height: 32px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 13px;
}
</style>

View File

@ -0,0 +1,180 @@
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="70px">
<el-form-item label="家长姓名" prop="parentName">
<el-button
@click="parentshow = true"
v-if="parentName == '请选择家长'"
class="btn"
style="color: #c0c4cc;"
>{{ parentName }}</el-button>
<el-button @click="parentshow = true" class="btn" v-else>{{ parentName }}</el-button>
</el-form-item>
</el-form>
<!-- // -->
<el-dialog
width="900px"
title="选择家长"
:visible.sync="parentshow"
append-to-body
:before-close="parentcancel"
>
<el-form ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="110px">
<el-form-item label="家长姓名" prop="parentName">
<el-input
style="width: 200px"
v-model="parentqueryParams.parentName"
placeholder="请输入家长姓名"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="parenthandleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="parentresetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="parentList" @cell-dblclick="parentlick">
<el-table-column label="请选择" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
circle
@click="parentlick(scope.row)"
v-if="parentId == scope.row.id"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="parentlick(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column property="parentName" label="家长姓名" align="center"></el-table-column>
<el-table-column property="parentSex" label="性别" align="center"></el-table-column>
<el-table-column property="phone" label="联系电话" align="center"></el-table-column>
</el-table>
<pagination
v-show="total1 > 0"
:total="total1"
:page.sync="parentqueryParams.pageNum"
:limit.sync="parentqueryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
</div>
</template>
<script>
import { listParentInfo } from "@/api/system/parentInfo";
export default {
name: "parent",
props: ["resets"],
components: {},
data() {
return {
total1: 0,
//
parentshow: false,
//
showSearch: true,
//
form: {},
//
parentqueryParams: {
pageNum: 1,
pageSize: 10,
parentName: null,
phone: null
},
//list
parentList: [],
//
parentName: "请选择家长",
//ID
parentId: ""
};
},
mounted() {},
watch: {
resets: {
handler(newresets, oldresets) {
console.log(newresets, oldresets);
}
}
},
created() {
this.getList();
this.onshow();
console.log(this.resets);
},
methods: {
onshow() {
// this.parentId = localStorage.getItem("parentId");
if (localStorage.getItem("parentName") == null) {
this.parentName = "请选择家长";
} else {
// this.parentName = localStorage.getItem("parentName");
}
this.$emit("parentlist", this.parentId);
},
//
parentlick(row) {
this.parentName = row.parentName;
this.parentId = row.id;
this.parentshow = false;
localStorage.setItem("parentName", this.parentName);
// localStorage.setItem("parentId", this.parentId);
this.$emit("parentlist", this.parentId, 1);
},
//
parentcancel() {
this.parentshow = false;
this.parentresetQuery();
},
//
parenthandleQuery() {
this.getList();
},
parentresetQuery() {
this.parentqueryParams = {
pageNum: 1,
pageSize: 10,
organizeId: null,
parentName: null,
kindergartenAddress: null,
kindergartenType: null,
phone: null,
contacts: null
};
this.parenthandleQuery();
},
getList() {
//list
listParentInfo(this.parentqueryParams).then(response => {
this.parentList = response.rows;
this.total1 = response.total;
});
},
//
reset() {
this.parentName = "请选择家长";
this.parentId = "";
}
}
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
border: none;
}
.btn {
width: 230px;
text-align: left;
height: 32px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 13px;
}
</style>

View File

@ -0,0 +1,239 @@
<template>
<div class="app-container">
<kindergar @kinbatlist="kinbatlist" style="width: 500px; display: inline;" ref="kinresets"></kindergar>
<parent @parentlist="parentlist" style="width: 500px; display: inline;" ref="resets"></parent>
<el-form size="small" :inline="true" v-show="showSearch">
<el-form-item label="日期" prop="orderStatus" label-width="60px">
<el-date-picker
v-model="valuetime"
type="daterange"
align="right"
@change="monthStartEndTimechange"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
></el-date-picker>
</el-form-item>
<el-form-item label="操作类型" prop="patientName" label-width="80px">
<el-select v-model="loginType" placeholder="请选择订单状态">
<el-option
v-for="item in loginTypelist"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getlist">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="list">
<el-table-column label="家长姓名" align="center" prop="parentName" />
<el-table-column label="操作类型" align="center" prop="logType">
<template slot-scope="scope">
{{scope.row.logType=='LOGIN'?'登录':''}}
{{scope.row.logType=='EXERCISE_PRESCRIPTION_VIDEO'?'运动处方视频':''}}
{{scope.row.logType=='EXERCISE_PRESCRIPTION'?'运动处方':''}}
</template>
</el-table-column>
<el-table-column label="时间" align="center" prop="logTime" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="pageNum"
:limit.sync="pageSize"
@pagination="getlist"
/>
<!-- 家长弹框 -->
<!-- <el-dialog
title="选择护理站"
:visible.sync="nurseStationshow"
width="1100px"
append-to-body
:before-close="clicknurseStationshow"
></el-dialog>-->
<!-- 所属班级弹框 -->
<!-- <el-dialog
title="选择护理站"
:visible.sync="nurseStationshow"
width="1100px"
append-to-body
:before-close="clicknurseStationshow"
></el-dialog>-->
</div>
</template>
<script>
import { appletVisitRecord } from "@/api/system/AppletAccessLog";
import baseurl from "@/api/baseurl.js";
import kindergar from "../../assembly/kindergarlog.vue";
import parent from "../../assembly/parent.vue";
export default {
name: "AppletAccessLog",
components: { kindergar, parent },
data() {
return {
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
}
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
}
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
}
}
]
},
valuetime: "",
loading: false,
//
showSearch: true,
baseurl: null,
loginTypelist: [
{
label: "运动处方",
value: "EXERCISE_PRESCRIPTION"
},
{
label: "运动处方视频",
value: "EXERCISE_PRESCRIPTION_VIDEO"
},
{
label: "登录",
value: "LOGIN"
}
],
pageNum: 1,
pageSize: 10,
parentInfoId: "",
kindergartenId: "",
startDate: null,
endDate: null,
loginType: "",
list: [],
total: 0
};
},
created() {
this.newtime();
this.baseurl = baseurl;
this.getlist();
},
mounted() {},
methods: {
//
newtime() {
let nowDate = new Date();
let dates = {
//
year: nowDate.getFullYear(),
//
month: nowDate.getMonth() + 1,
//
date: nowDate.getDate()
};
//
if (dates.month < 10) {
this.startDate = dates.year + "-0" + dates.month;
this.endDate = dates.year + "-0" + dates.month;
} else {
this.startDate = dates.year + "." + dates.month;
this.endDate = dates.year + "-" + dates.month;
}
if (dates.date < 10) {
this.startDate = this.startDate + "-0" + dates.date;
this.endDate = this.endDate + "-0" + dates.date;
} else {
this.startDate = this.startDate + "-" + dates.date;
this.endDate = this.endDate + "-" + dates.date;
}
},
//list
getlist() {
appletVisitRecord(
this.pageNum,
this.pageSize,
this.parentInfoId,
this.kindergartenId,
this.startDate,
this.endDate,
this.loginType
).then(res => {
this.list = res.rows;
this.total = res.total;
});
},
//
resetQuery() {
this.newtime();
this.parentInfoId = "";
this.kindergartenId = "";
this.loginType = "";
this.valuetime = "";
this.$refs.resets.reset();
this.$refs.kinresets.reset();
this.getlist();
},
//
monthStartEndTimechange(e) {
this.startDate = this.formatDate(new Date(e[0]).getTime());
this.endDate = this.formatDate(new Date(e[1]).getTime());
},
//
parentlist(e) {
this.parentInfoId = e;
},
//
kinbatlist(kindergartenId) {
this.kindergartenId = kindergartenId;
},
formatDate(time, timetype) {
let date = new Date(time); //13
//let date = new Date(parseInt(time) * 1000); //10
let y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? "0" + MM : MM;
let d = date.getDate();
d = d < 10 ? "0" + d : d;
return y + "-" + MM + "-" + d;
}
}
};
</script>
<style lang='scss' scoped>
.app-container {
padding: 20px 0 20px 10px;
}
::v-deep .el-card__header {
border: none;
}
::v-deep .el-form {
display: inline;
}
</style>

View File

@ -444,7 +444,7 @@ export default {
},
queryParams2: {
pageNum: 1,
pageSize: 10,
pageSize: 100,
kindergartenId: null,
className: null,
classType: null,

View File

@ -190,11 +190,9 @@ export default {
//
const regMobile =
/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57]|19[0-9])[0-9]{8}$/;
if (regMobile.test(value)) {
return cb();
}
cb(new Error("请输入合法的手机号"));
};
return {