From 54e06ab83d8fbebf91f8e0c3a621da743ac5af26 Mon Sep 17 00:00:00 2001
From: 黄何裕 <1053952480@qq.com>
Date: 星期四, 08 八月 2024 09:28:06 +0800
Subject: [PATCH] 课表页面开发
---
src/views/class/index.vue | 227 ++-
vue.config.js | 2
src/api/rollCall.js | 102 +
src/views/curriculum/index.vue | 356 ++++-
src/api/integral.js | 72 +
src/views/student/index.vue | 130 +
src/views/scheduleCourses/index.vue | 211 ++-
src/api/work.js | 82 +
src/views/rollCall/index.vue | 336 ++++-
src/views/student/components/create.vue | 39
src/utils/graphql.js | 2
src/views/development/index.vue | 254 ++-
src/views/integral/index.vue | 227 ++-
src/views/home/components/chart.vue | 67 +
src/router/index.js | 279 ++--
src/views/comment/index.vue | 244 ++-
.env.development | 2
src/api/curriculum.js | 75 +
src/views/home/index.vue | 41
src/api/comment.js | 77 +
src/api/student.js | 63
package.json | 1
src/api/scheduleCourses.js | 68 +
src/api/class.js | 78 +
src/api/development.js | 70 +
src/views/work/index.vue | 215 ++-
26 files changed, 2,453 insertions(+), 867 deletions(-)
diff --git a/.env.development b/.env.development
index 3796388..2ebbba7 100644
--- a/.env.development
+++ b/.env.development
@@ -2,4 +2,4 @@
ENV = 'development'
# base api
-VUE_APP_BASE_API = 'http://192.168.3.88:18080/dream_test'
+VUE_APP_BASE_API = 'http://192.168.3.87:18081/dream'
diff --git a/package.json b/package.json
index 186f2b0..8ce7d9a 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"core-js": "3.6.5",
"cors": "^2.8.5",
"cos-js-sdk-v5": "^1.8.3",
+ "echarts": "^5.5.1",
"element-ui": "2.13.2",
"graphql": "^16.9.0",
"graphql-tag": "^2.12.6",
diff --git a/src/api/class.js b/src/api/class.js
new file mode 100644
index 0000000..21e36e8
--- /dev/null
+++ b/src/api/class.js
@@ -0,0 +1,78 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getTeamDtoAll(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $types: [TeamType!]!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findTeamDtoAll(
+ staffId: $staffId
+ types: $types
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ team {
+ id
+ name
+ voucher {
+ id
+ name
+ }
+ sessionStaffs {
+ id
+ name
+ }
+ }
+ playerCount
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getDeletedItem(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $itemType: ItemType!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findDeletedItem(
+ staffId: $staffId
+ itemType: $itemType
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ modifyTime
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/comment.js b/src/api/comment.js
new file mode 100644
index 0000000..a41583c
--- /dev/null
+++ b/src/api/comment.js
@@ -0,0 +1,77 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getSessionWithComment(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars($staffId: Int!, $keyword: String, $pageIn: PageIn!) {
+ findSessionWithComment(
+ staffId: $staffId
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ sessionId
+ courseName
+ beginTime
+ endTime
+ homeworkCommentId
+ playerCount
+ commentCount
+ staffNames
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getHomeworkCommentByAuth(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $commentTypes: [HomeworkCommentType!]!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findHomeworkCommentByAuth(
+ staffId: $staffId
+ commentTypes: $commentTypes
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ player {
+ id
+ name
+ }
+ commentType
+ homework {
+ id
+ name
+ }
+ lastStaffCommentId
+ createTime
+ createById
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/curriculum.js b/src/api/curriculum.js
new file mode 100644
index 0000000..501921e
--- /dev/null
+++ b/src/api/curriculum.js
@@ -0,0 +1,75 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getBySessionExistsOfDay(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars($staffId: Int!, $day: LocalDate!) {
+ findBySessionExistsOfDay(staffId: $staffId, day: $day) {
+ id
+ name
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getSubjectByCourseAndDateRange(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $courseIds: [Int]!
+ $beginDate: LocalDate!
+ $endDate: LocalDate!
+ ) {
+ findSubjectByCourseAndDateRange(
+ staffId: $staffId
+ courseIds: $courseIds
+ beginDate: $beginDate
+ endDate: $endDate
+ ) {
+ date
+ subjects {
+ id
+ name
+ subjectType
+ sessions {
+ id
+ courseId
+ courseName
+ courseType
+ playerMax
+ planId
+ sessionType
+ beginTime
+ endTime
+ staffCount
+ placeCount
+ staffNames
+ placeIds
+ placeNames
+ firstPlayerName
+ playerCount
+ playerNoneCount
+ playerApplyBookingCount
+ playerBookingCount
+ playerApplyLeaveCount
+ playerLeaveCount
+ playerLateCount
+ playerAbsenceCount
+ playerCompleteCount
+ description
+ complete
+ color
+ }
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/development.js b/src/api/development.js
new file mode 100644
index 0000000..0e00796
--- /dev/null
+++ b/src/api/development.js
@@ -0,0 +1,70 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getHomeworkByType(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $homeworkType: HomeworkType!
+ $keyword: String
+ $pageIn: PageIn
+ ) {
+ findHomeworkByType(
+ staffId: $staffId
+ homeworkType: $homeworkType
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ category
+ publisher {
+ id
+ name
+ }
+ createTime
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getSessionHomeworkDto(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars($staffId: Int!, $keyword: String, $pageIn: PageIn!) {
+ findSessionHomeworkDto(
+ staffId: $staffId
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ sessionId
+ courseName
+ beginTime
+ endTime
+ playerCount
+ commentCount
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/integral.js b/src/api/integral.js
new file mode 100644
index 0000000..459523e
--- /dev/null
+++ b/src/api/integral.js
@@ -0,0 +1,72 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getPlayerScore(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars($staffId: Int!, $keyword: String, $pageIn: PageIn!) {
+ findPlayerScore(staffId: $staffId, keyword: $keyword, pageIn: $pageIn) {
+ ls {
+ playerId
+ playerName
+ voucherId
+ voucherName
+ qty
+ endDate
+ modifyTime
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getTeamDtoAll(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $types: [TeamType!]!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findTeamDtoAll(
+ staffId: $staffId
+ types: $types
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ team {
+ id
+ name
+ voucher {
+ id
+ name
+ }
+ sessionStaffs {
+ id
+ name
+ }
+ }
+ playerCount
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/rollCall.js b/src/api/rollCall.js
new file mode 100644
index 0000000..5a599cd
--- /dev/null
+++ b/src/api/rollCall.js
@@ -0,0 +1,102 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getPlayerAccByStaffWithRollCall(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars($staffId: Int!, $keyword: String, $pageIn: PageIn!) {
+ findPlayerAccByStaffWithRollCall(
+ staffId: $staffId
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ player {
+ id
+ name
+ }
+ voucher {
+ id
+ name
+ }
+ voucherType
+ memberType
+ qty
+ amt
+ endDate
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getTeamByStaffWithRollCall(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars($staffId: Int!, $keyword: String, $pageIn: PageIn!) {
+ findTeamByStaffWithRollCall(
+ staffId: $staffId
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+export function getUnCompleteSession(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $completeTypes: [CompleteType!]!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findUnCompleteSession(
+ staffId: $staffId
+ completeTypes: $completeTypes
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ courseName
+ teamId
+ teamName
+ beginTime
+ endTime
+ playerCount
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/scheduleCourses.js b/src/api/scheduleCourses.js
new file mode 100644
index 0000000..a60c721
--- /dev/null
+++ b/src/api/scheduleCourses.js
@@ -0,0 +1,68 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getCourse(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $types: [CourseType]
+ $keyword: String
+ $pageIn: PageIn
+ ) {
+ findCourse(
+ staffId: $staffId
+ types: $types
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ courseType
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getDeletedItem(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $itemType: ItemType!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findDeletedItem(
+ staffId: $staffId
+ itemType: $itemType
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ modifyTime
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/student.js b/src/api/student.js
index 739105b..6456ede 100644
--- a/src/api/student.js
+++ b/src/api/student.js
@@ -181,37 +181,6 @@
});
}
-export function getDeleted(params) {
- return apolloClient.query({
- query: gql`
- query vars(
- $staffId: Int!
- $itemType: ItemType!
- $keyword: String
- $pageIn: PageIn!
- ) {
- findDeletedItem(
- staffId: $staffId
- itemType: $itemType
- keyword: $keyword
- pageIn: $pageIn
- ) {
- ls {
- id
- name
- modifyTime
- }
- pageOut {
- total
- index
- size
- }
- }
- }
- `,
- variables: params,
- });
-}
export function getDetails(params) {
return apolloClient.query({
@@ -335,3 +304,35 @@
variables: params,
});
}
+//宸插仠鐢�
+export function getDeleted(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $itemType: ItemType!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findDeletedItem(
+ staffId: $staffId
+ itemType: $itemType
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ modifyTime
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/api/work.js b/src/api/work.js
new file mode 100644
index 0000000..4f0b224
--- /dev/null
+++ b/src/api/work.js
@@ -0,0 +1,82 @@
+import apolloClient from "@/utils/graphql";
+import gql from "graphql-tag";
+
+//鍏ㄩ儴
+export function getHomeworkByType(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $homeworkType: HomeworkType!
+ $keyword: String
+ $pageIn: PageIn
+ ) {
+ findHomeworkByType(
+ staffId: $staffId
+ homeworkType: $homeworkType
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ name
+ publisher {
+ id
+ name
+ }
+ createTime
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
+
+//鍋滅敤
+export function getHomeworkCommentByAuth(params) {
+ return apolloClient.query({
+ query: gql`
+ query vars(
+ $staffId: Int!
+ $commentTypes: [HomeworkCommentType!]!
+ $keyword: String
+ $pageIn: PageIn!
+ ) {
+ findHomeworkCommentByAuth(
+ staffId: $staffId
+ commentTypes: $commentTypes
+ keyword: $keyword
+ pageIn: $pageIn
+ ) {
+ ls {
+ id
+ player {
+ id
+ name
+ }
+ commentType
+ homework {
+ id
+ name
+ }
+ lastStaffCommentId
+ createTime
+ createById
+ }
+ pageOut {
+ total
+ index
+ size
+ }
+ }
+ }
+ `,
+ variables: params,
+ });
+}
diff --git a/src/router/index.js b/src/router/index.js
index 5a0c890..ee4ea47 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -56,83 +56,108 @@
},
],
},
-
{
- path: "/educational",
+ path: "/",
component: Layout,
- redirect: "/educational/student",
- name: "Educational",
- meta: { title: "鏁欏姟", icon: "el-icon-s-help" },
+ redirect: "/curriculum",
children: [
{
- path: "student",
+ path: "/curriculum",
+ name: "Curriculum",
+ component: () => import("@/views/curriculum/index"),
+ meta: { title: "璇捐〃", icon: "table" },
+ },
+ ],
+ },
+ {
+ path: "/",
+ component: Layout,
+ redirect: "/student",
+ children: [
+ {
+ path: "/student",
name: "Student",
component: () => import("@/views/student/index"),
meta: { title: "瀛﹀憳", icon: "table" },
},
- {
- path: "student/details",
- name: "StudentDetails",
- component: () => import("@/views/student/components/details.vue"),
- meta: { title: "瀛﹀憳璇︽儏" },
- hidden: true,
- },
- {
- path: "class",
- name: "Class",
- component: () => import("@/views/class/index"),
- meta: { title: "鐝骇", icon: "tree" },
- },
- {
- path: "scheduleCourses",
- name: "ScheduleCourses",
- component: () => import("@/views/scheduleCourses/index"),
- meta: { title: "鎺掕", icon: "table" },
- },
- {
- path: "work",
- name: "Work",
- component: () => import("@/views/work/index"),
- meta: { title: "浣滀笟", icon: "tree" },
- },
- {
- path: "comment",
- name: "Comment",
- component: () => import("@/views/comment/index"),
- meta: { title: "鐐硅瘎", icon: "table" },
- },
- {
- path: "curriculum",
- name: "Curriculum",
- component: () => import("@/views/curriculum/index"),
- meta: { title: "璇捐〃", icon: "tree" },
- },
- {
- path: "table",
- name: "Table",
- component: () => import("@/views/student/index"),
- meta: { title: "鏃ョ▼", icon: "table" },
- },
- {
- path: "development",
- name: "Development",
- component: () => import("@/views/development/index"),
- meta: { title: "鎴愰暱", icon: "tree" },
- },
- {
- path: "integral",
- name: "Integral",
- component: () => import("@/views/integral/index"),
- meta: { title: "绉垎", icon: "tree" },
- },
- {
- path: "rollCall",
- name: "RollCall",
- component: () => import("@/views/rollCall/index"),
- meta: { title: "鐐硅瘎", icon: "tree" },
- },
],
},
+ // {
+ // path: "/educational",
+ // component: Layout,
+ // redirect: "/educational/student",
+ // name: "Educational",
+ // meta: { title: "鏁欏姟", icon: "el-icon-s-help" },
+ // children: [
+ // {
+ // path: "student",
+ // name: "Student",
+ // component: () => import("@/views/student/index"),
+ // meta: { title: "瀛﹀憳", icon: "table" },
+ // },
+ // {
+ // path: "student/details",
+ // name: "StudentDetails",
+ // component: () => import("@/views/student/components/details.vue"),
+ // meta: { title: "瀛﹀憳璇︽儏" },
+ // hidden: true,
+ // },
+ // {
+ // path: "class",
+ // name: "Class",
+ // component: () => import("@/views/class/index"),
+ // meta: { title: "鐝骇", icon: "tree" },
+ // },
+ // {
+ // path: "scheduleCourses",
+ // name: "ScheduleCourses",
+ // component: () => import("@/views/scheduleCourses/index"),
+ // meta: { title: "鎺掕", icon: "table" },
+ // },
+ // {
+ // path: "work",
+ // name: "Work",
+ // component: () => import("@/views/work/index"),
+ // meta: { title: "浣滀笟", icon: "tree" },
+ // },
+ // {
+ // path: "comment",
+ // name: "Comment",
+ // component: () => import("@/views/comment/index"),
+ // meta: { title: "鐐硅瘎", icon: "table" },
+ // },
+ // {
+ // path: "curriculum",
+ // name: "Curriculum",
+ // component: () => import("@/views/curriculum/index"),
+ // meta: { title: "璇捐〃", icon: "tree" },
+ // },
+ // {
+ // path: "table",
+ // name: "Table",
+ // component: () => import("@/views/student/index"),
+ // meta: { title: "鏃ョ▼", icon: "table" },
+ // },
+ // {
+ // path: "development",
+ // name: "Development",
+ // component: () => import("@/views/development/index"),
+ // meta: { title: "鎴愰暱", icon: "tree" },
+ // },
+ // {
+ // path: "integral",
+ // name: "Integral",
+ // component: () => import("@/views/integral/index"),
+ // meta: { title: "绉垎", icon: "tree" },
+ // },
+ // {
+ // path: "rollCall",
+ // name: "RollCall",
+ // component: () => import("@/views/rollCall/index"),
+ // meta: { title: "鐐硅瘎", icon: "tree" },
+ // },
+ // ],
+ // },
// {
// path: '/form',
@@ -147,66 +172,66 @@
// ]
// },
- {
- path: "/nested",
- component: Layout,
- redirect: "/nested/menu1",
- name: "Nested",
- meta: {
- title: "Nested",
- icon: "nested",
- },
- children: [
- {
- path: "menu1",
- component: () => import("@/views/nested/menu1/index"), // Parent router-view
- name: "Menu1",
- meta: { title: "Menu1" },
- children: [
- {
- path: "menu1-1",
- component: () => import("@/views/nested/menu1/menu1-1"),
- name: "Menu1-1",
- meta: { title: "Menu1-1" },
- },
- {
- path: "menu1-2",
- component: () => import("@/views/nested/menu1/menu1-2"),
- name: "Menu1-2",
- meta: { title: "Menu1-2" },
- children: [
- {
- path: "menu1-2-1",
- component: () =>
- import("@/views/nested/menu1/menu1-2/menu1-2-1"),
- name: "Menu1-2-1",
- meta: { title: "Menu1-2-1" },
- },
- {
- path: "menu1-2-2",
- component: () =>
- import("@/views/nested/menu1/menu1-2/menu1-2-2"),
- name: "Menu1-2-2",
- meta: { title: "Menu1-2-2" },
- },
- ],
- },
- {
- path: "menu1-3",
- component: () => import("@/views/nested/menu1/menu1-3"),
- name: "Menu1-3",
- meta: { title: "Menu1-3" },
- },
- ],
- },
- {
- path: "menu2",
- component: () => import("@/views/nested/menu2/index"),
- name: "Menu2",
- meta: { title: "menu2" },
- },
- ],
- },
+ // {
+ // path: "/nested",
+ // component: Layout,
+ // redirect: "/nested/menu1",
+ // name: "Nested",
+ // meta: {
+ // title: "Nested",
+ // icon: "nested",
+ // },
+ // children: [
+ // {
+ // path: "menu1",
+ // component: () => import("@/views/nested/menu1/index"), // Parent router-view
+ // name: "Menu1",
+ // meta: { title: "Menu1" },
+ // children: [
+ // {
+ // path: "menu1-1",
+ // component: () => import("@/views/nested/menu1/menu1-1"),
+ // name: "Menu1-1",
+ // meta: { title: "Menu1-1" },
+ // },
+ // {
+ // path: "menu1-2",
+ // component: () => import("@/views/nested/menu1/menu1-2"),
+ // name: "Menu1-2",
+ // meta: { title: "Menu1-2" },
+ // children: [
+ // {
+ // path: "menu1-2-1",
+ // component: () =>
+ // import("@/views/nested/menu1/menu1-2/menu1-2-1"),
+ // name: "Menu1-2-1",
+ // meta: { title: "Menu1-2-1" },
+ // },
+ // {
+ // path: "menu1-2-2",
+ // component: () =>
+ // import("@/views/nested/menu1/menu1-2/menu1-2-2"),
+ // name: "Menu1-2-2",
+ // meta: { title: "Menu1-2-2" },
+ // },
+ // ],
+ // },
+ // {
+ // path: "menu1-3",
+ // component: () => import("@/views/nested/menu1/menu1-3"),
+ // name: "Menu1-3",
+ // meta: { title: "Menu1-3" },
+ // },
+ // ],
+ // },
+ // {
+ // path: "menu2",
+ // component: () => import("@/views/nested/menu2/index"),
+ // name: "Menu2",
+ // meta: { title: "menu2" },
+ // },
+ // ],
+ // },
// {
// path: 'external-link',
diff --git a/src/utils/graphql.js b/src/utils/graphql.js
index e1d8377..8d5bd0e 100644
--- a/src/utils/graphql.js
+++ b/src/utils/graphql.js
@@ -6,7 +6,7 @@
// export default apolloClient;
// 瀹氫箟涓嶅悓璇锋眰鍦板潃
-const EFORMURI = "http://192.168.3.88:18080/dream_test/graphql";
+const EFORMURI = "http://192.168.3.87:18081/dream/graphql";
const IOTURI = "https://www.9village.cn/dream_test" + "/graphql";
// import ApolloClient from 'apollo-boost' //寮曞叆apollo-boost鎻掍欢
import { ApolloClient } from "apollo-client";
diff --git a/src/views/class/index.vue b/src/views/class/index.vue
index f79de1a..11fdb70 100644
--- a/src/views/class/index.vue
+++ b/src/views/class/index.vue
@@ -1,103 +1,178 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="鍏ㄩ儴" name="first" />
- <el-tab-pane label="宸插仠鐢�" name="fourth" />
- </el-tabs>
- <div style="display: flex; flex-direction: row-reverse;">
- <div style="width: 300px;">
- <el-input
- placeholder="鎸夌彮绾у悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ <div class="app-container">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="鍏ㄩ儴" name="all" />
+ <el-tab-pane label="宸插仠鐢�" name="deactivated" />
+ </el-tabs>
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夌彮绾у悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ v-if="activeName == 'all'"
+ height="100%"
>
<el-table-column label="鐝骇鍚嶇О">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.team.name
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="鐝骇浜烘暟" width="80">
- <template slot-scope=""> 鐢� </template>
+ <el-table-column label="鐝骇浜烘暟" width="200">
+ <template slot-scope="scope">{{ scope.row.playerCount }} 浜�</template>
</el-table-column>
<el-table-column label="璇惧寘/浼氬憳鍗�" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="榛樿璇炬秷" width="200">
- <template slot-scope=""> asfiaf </template>
+ <template slot-scope="scope">{{
+ scope.row.team.voucher.name
+ }}</template>
</el-table-column>
<el-table-column label="鏁欏笀" width="">
- <template slot-scope=""> asfiaf </template>
+ <template slot-scope="scope">{{
+ concatenateArray(scope.row.team.sessionStaffs)
+ }}</template>
</el-table-column>
- <el-table-column label="瀛﹀憳浜烘暟" width="">
- <template slot-scope=""> asfiaf </template>
+ </el-table>
+ <el-table
+ v-loading="listLoading"
+ :data="list"
+ element-loading-text="Loading"
+ fit
+ height="100%"
+ v-else
+ >
+ <el-table-column label="鐝骇鍚嶇О">
+ <template slot-scope="scope">{{ scope.row.name }} </template>
</el-table-column>
- <!-- <el-table-column label="Author" width="110" align="center">
- <template slot-scope="scope">
- <span>{{ scope.row.author }}</span>
+ <el-table-column label="鍋滅敤鏃堕棿">
+ <template slot-scope="scope">{{ scope.row.modifyTime }} </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="200">
+ <template slot-scope="">
+ <el-link type="primary" :underline="false">鎭㈠</el-link>
</template>
</el-table-column>
- <el-table-column label="Pageviews" width="110" align="center">
- <template slot-scope="scope">
- {{ scope.row.pageviews }}
- </template>
- </el-table-column>
- <el-table-column class-name="status-col" label="Status" width="110" align="center">
- <template slot-scope="scope">
- <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag>
- </template>
- </el-table-column>
- <el-table-column align="center" prop="created_at" label="Display_time" width="200">
- <template slot-scope="scope">
- <i class="el-icon-time" />
- <span>{{ scope.row.display_time }}</span>
- </template>
- </el-table-column> -->
</el-table>
</div>
- </template>
-
- <script>
- import { getList } from "@/api/table";
-
- export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
- },
- },
- data() {
- return {
- list: null,
- listLoading: true,
- activeName: "first",
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </div>
+</template>
+
+<script>
+import { getTeamDtoAll, getDeletedItem } from "@/api/class";
+
+export default {
+ filters: {
+ statusFilter(status) {
+ const statusMap = {
+ published: "success",
+ draft: "gray",
+ deleted: "danger",
};
+ return statusMap[status];
},
- created() {
- this.fetchData();
+ },
+ data() {
+ return {
+ list: null,
+ listLoading: true,
+ activeName: "all",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: {
+ name: "name", //鎺掑簭瀛楁鍚嶇О
+ direction: "ASC", //鎺掑簭鏂瑰悜
+ },
+ },
+ types: ["NORMAL"],
+ },
+ };
+ },
+ created() {
+ this.fetchData();
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
},
- methods: {
- fetchData() {
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
+ this.listLoading = true;
+ if (this.activeName == "all") {
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
+ getTeamDtoAll(this.data).then((response) => {
+ this.list = response.data.findTeamDtoAll.ls;
+ this.total = response.data.findTeamDtoAll.pageOut.total;
this.listLoading = false;
});
- },
+ } else if (this.activeName == "deactivated") {
+ this.listLoading = true;
+ let data = {
+ itemType: "TEAM",
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ getDeletedItem(data).then((response) => {
+ this.list = response.data.findDeletedItem.ls;
+ this.total = response.data.findDeletedItem.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
- };
- </script>
-
\ No newline at end of file
+ concatenateArray(arr) {
+ let result = "";
+ for (let i = 0; i < arr.length; i++) {
+ if (i == 0) {
+ result += arr[i].name;
+ } else {
+ result += "," + arr[i].name;
+ }
+ }
+ return result;
+ },
+ },
+};
+</script>
diff --git a/src/views/comment/index.vue b/src/views/comment/index.vue
index 0bcef35..004ad03 100644
--- a/src/views/comment/index.vue
+++ b/src/views/comment/index.vue
@@ -1,118 +1,190 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="璇剧▼" name="first">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夎绋嬪悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ <div class="app-container">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="璇惧悗鐐硅瘎" name="comment">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夎绋嬪悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="璇剧▼鍚嶇О">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.courseName
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="鏃堕棿" width="80">
- <template slot-scope=""> 鐢� </template>
+ <el-table-column label="璇剧▼鏃堕棿" width="">
+ <template slot-scope="scope">
+ {{ scope.row.beginTime }}
+ </template>
</el-table-column>
- <el-table-column label="鏁欏笀" width="200">
- <template slot-scope=""> 10086 </template>
+ <el-table-column label="鏁欏笀" width="" prop="staffNames">
</el-table-column>
- <el-table-column label="瀛﹀憳鏁�" width="200">
- <template slot-scope=""> asfiaf </template>
+ <el-table-column label="瀛﹀憳鏁�" width="" prop="playerCount">
</el-table-column>
- <el-table-column label="宸茬偣璇勬暟" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 鐐硅瘎 </template>
+ <el-table-column label="宸茬偣璇勬暟" width="" prop="commentCount">
</el-table-column>
</el-table>
- </el-tab-pane>
- <el-tab-pane label="鍏朵粬" name="fourth">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夊鍛樺悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="鍏朵粬" name="other">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夊鍛樺悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button slot="append" icon="el-icon-search" @click="fetchData"></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
- <el-table-column label="瀛﹀憳">
- <template slot-scope=""> xxxxx </template>
+ <el-table-column label="瀛﹀憳鍚嶇О">
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.player.name
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="鏃堕棿" width="80">
- <template slot-scope=""> 鐢� </template>
- </el-table-column>
- <el-table-column label="鏍囬" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="鐐硅瘎鑰佸笀" width="200">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 鏌ョ湅 </template>
+ <el-table-column label="鐐硅瘎鏃堕棿" width="" prop="createTime">
</el-table-column>
</el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </template>
-
- <script>
- import { getList } from "@/api/table";
-
- export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
- },
- },
- data() {
- return {
- list: null,
- listLoading: true,
- activeName: "first",
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+</template>
+
+<script>
+import { getSessionWithComment, getHomeworkCommentByAuth } from "@/api/comment";
+
+export default {
+ filters: {
+ statusFilter(status) {
+ const statusMap = {
+ published: "success",
+ draft: "gray",
+ deleted: "danger",
};
+ return statusMap[status];
},
- created() {
- this.fetchData();
+ },
+ data() {
+ return {
+ list: null,
+ listLoading: true,
+ activeName: "comment",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: {
+ name: "begin_time", //鎺掑簭瀛楁鍚嶇О
+ direction: "ASC", //鎺掑簭鏂瑰悜
+ },
+ },
+ },
+ };
+ },
+ created() {
+ this.fetchData();
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
},
- methods: {
- fetchData() {
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
+ this.listLoading = true;
+ if (this.activeName == "comment") {
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
+ getSessionWithComment(this.data).then((response) => {
+ this.list = response.data.findSessionWithComment.ls;
+ this.total = response.data.findSessionWithComment.pageOut.total;
this.listLoading = false;
});
- },
+ } else if (this.activeName == "other") {
+ this.listLoading = true;
+ let data = {
+ commentTypes: ["DIRECT_COMMENT"],
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ data.pageIn.sorts.name = "createTime";
+ data.pageIn.sorts.direction = "DESC";
+ getHomeworkCommentByAuth(data).then((response) => {
+ this.list = response.data.findHomeworkCommentByAuth.ls;
+ this.total = response.data.findHomeworkCommentByAuth.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
- };
- </script>
-
\ No newline at end of file
+ },
+};
+</script>
diff --git a/src/views/curriculum/index.vue b/src/views/curriculum/index.vue
index c1fbb06..de71a49 100644
--- a/src/views/curriculum/index.vue
+++ b/src/views/curriculum/index.vue
@@ -1,131 +1,271 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="璇剧▼" name="first" />
- <el-tab-pane label="鏁欏笀" name="fourth" />
- <el-tab-pane label="鍦哄湴" name="xxx" />
+ <div style="padding: 20px">
+ <el-tabs v-model="activeName" @tab-click="getCourses">
+ <el-tab-pane label="璇剧▼" name="course" />
+ <el-tab-pane label="鏁欏笀" name="teacher" />
+ <el-tab-pane label="鍦哄湴" name="site" />
</el-tabs>
- <div>
- <div style="width: 300px">
- <el-date-picker v-model="timeData" type="date" placeholder="閫夋嫨鏃ユ湡">
- </el-date-picker>
- </div>
- <div style="display: flex">
- <div class="timetable-b w100">
- <table class="timetable-content w100">
- <thead>
- <tr>
- <th></th>
- <th v-for="(item1, index1) in weeks" :key="index1">
- xxx
- </th>
- </tr>
- </thead>
- <tbody>
- <tr v-for="(item2, index2) in maxCourseLength" :key="index2">
- <td>
- <p>{{ xxx }}</p>
- </td>
- <template v-for="(item3, index3) in weeks">
- <td
- :key="index3"
- :rowspan="
- showData(index3, index2 + 1).subject &&
- showData(index3, index2).subject ===
- showData(index3, index2 + 1).subject
- ? 2
- : ''
- "
- :style="[
- {
- display:
- showData(index3, index2 - 1).subject &&
- showData(index3, index2 - 1).subject ===
- showData(index3, index2).subject
- ? 'none'
- : '',
- },
- ]"
- >
- <div
- class="dmsjandjs-b"
- :style="[
- {
- background: showData(index3, index2).index
- ? getRandomColor()
- : '#FFFFFF',
- },
- { color: '#fff' },
- { borderRadius: '15px' },
- { padding: '12px' },
- { height: '100%' },
- ]"
- >
- <p>
- {{ showData(index3, index2).startTime }}
- {{ showData(index3, index2).startTime ? "-" : "" }}
- {{ showData(index3, index2).endTime }}
- </p>
- <p>{{ showData(index3, index2).subject }}</p>
- <p>{{ showData(index3, index2).major }}</p>
- <p>{{ showData(index3, index2).class }}</p>
- </div>
- </td>
- </template>
- </tr>
- </tbody>
- </table>
+ <div style="margin-bottom: 20px">
+ <el-date-picker
+ v-model="time"
+ type="date"
+ size="small"
+ placeholder="閫夋嫨鏃ユ湡"
+ @change="getCourses"
+ >
+ </el-date-picker>
+ </div>
+ <el-row>
+ <el-col :span="1" style="margin-top: 7px"
+ ><div
+ class=""
+ v-for="i in tiemData"
+ :key="i"
+ style="display: flex; flex-direction: row-reverse; margin: 32px 10px"
+ >
+ {{ i }}
+ </div></el-col
+ >
+ <el-col :span="23">
+ <div class="table_box">
+ <div
+ :style="{ display: 'flex', width: dataList.length * 200 + 'px' }"
+ >
+ <div
+ v-for="(i, index) in dataList"
+ :key="i.id"
+ class="header_box"
+ :id="0 < index ? 'header_boxA' : ''"
+ >
+ {{ i.name }}
+ </div>
+ </div>
+ <div style="display: flex; position: relative">
+ <div v-for="(i, index) in dataList" :key="i.id">
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div class="body_box" :id="0 < index ? 'header_boxA' : ''"></div>
+ <div
+ v-for="(j, index) in i.sessions"
+ :key="index"
+ :style="{
+ width: '200px',
+ backgroundColor: j.color,
+ position: 'absolute',
+ top: getTop(j.beginTime),
+ height: getHeight(j.beginTime, j.endTime),
+ borderRadius: '5px',
+ fontSize: '15px',
+ }"
+ @click="lookDetails(j)"
+ >
+ <div>{{ j.staffNames }}</div>
+ <span>{{ j.placeNames }}</span>
+ <div>
+ 瀛﹀憳锛歿{ j.playerCount }}浜� 璇峰亣锛歿{ j.placeCount }}浜�
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-drawer :title="drawerTime" :visible.sync="drawer" direction="rtl">
+ <div v-if="drawerIf">
+ <div style="display: flex; justify-content: center">
+ <i class="el-icon-time"></i> {{ headerTime }}
+ </div>
+ <div>
+ <el-form ref="form" label-width="80px">
+ <el-form-item label="璇剧▼">
+ <span>{{ formData.courseName }}</span>
+ </el-form-item>
+ <el-form-item label="鑰佸笀">
+ <span>{{ formData.staffNames }}</span>
+ </el-form-item>
+ <el-form-item label="鍦哄湴">
+ <span>{{ formData.placeNames }}</span>
+ </el-form-item>
+ <el-form-item label="瀛﹀憳">
+ <div style="display: flex; align-items: center;">
+ <el-progress
+ style="width: 300px"
+ :percentage="
+ Math.floor(
+ (formData.playerCount / formData.playerMax) * 100
+ )
+ "
+ ></el-progress>
+ <span
+ >瀛﹀憳{{ formData.playerCount }}浜�/涓婇檺{{
+ formData.playerMax
+ }}浜�</span
+ >
+ </div>
+ </el-form-item>
+ </el-form>
</div>
</div>
- </div>
+ </el-drawer>
</div>
</template>
-
<script>
-import { getList } from "@/api/table";
-
+import {
+ getBySessionExistsOfDay,
+ getSubjectByCourseAndDateRange,
+} from "@/api/curriculum";
export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
+ props: {
+ // 涓嬪崍鑺傛鏁�
+ afternoonLength: {
+ type: [String, Number],
+ default: 6,
},
+ // 鎬昏妭娆�
+ length: {
+ type: [String, Number],
+ default: 14,
+ },
+ // 璇捐〃鏁版嵁
+ // events: {
+ // type: Array,
+ // default: this.events1,
+ // },
},
data() {
return {
- list: null,
- listLoading: true,
- activeName: "first",
- timeData: new Date(),
+ // 璇剧▼琛ㄦ暟鎹�
+ tiemData: [
+ "07:00",
+ "08:00",
+ "09:00",
+ "10:00",
+ "11:00",
+ "12:00",
+ "13:00",
+ "14:00",
+ "15:00",
+ "16:00",
+ "17:00",
+ "18:00",
+ "19:00",
+ "20:00",
+ ],
+ time: new Date(),
+ dataList: [],
+ drawerTime: new Date(),
+ drawerIf: true,
+ drawer: false,
+ headerTime: "",
+ formData: {},
+ activeName:'course'
};
},
+ mounted() {
+ this.mergeData();
+ },
+ watch: {
+ events: {
+ handler(newVal, oldVal) {
+ this.mergeData();
+ },
+ deep: true,
+ },
+ },
created() {
- this.fetchData();
+ this.getCourses();
},
methods: {
- fetchData() {
- this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
- this.listLoading = false;
+ getCourses() {
+ let data = {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ day: this.getYMD(this.time),
+ };
+ getBySessionExistsOfDay(data).then((res) => {
+ let courseIds = [];
+ res.data.findBySessionExistsOfDay.map((i) => {
+ courseIds.push(i.id);
+ });
+ let params = {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ beginDate: this.getYMD(this.time),
+ endDate: this.getYMD(this.time),
+ courseIds: courseIds,
+ };
+ getSubjectByCourseAndDateRange(params).then((res) => {
+ this.dataList = res.data.findSubjectByCourseAndDateRange[0].subjects;
+ });
});
},
- //闅忔満鑾峰彇棰滆壊
- getRandomColor() {
- let colorList = this.colorList;
- let colorRandom = Math.floor(Math.random() * colorList.length + 1) - 1;
- let color;
- for (let i = 0; colorList.length > i; i++) {
- if (i == colorRandom) {
- color = colorList[i];
- }
- }
- return color;
+ getYMD(time) {
+ const year = time.getFullYear();
+ const month = (time.getMonth() + 1).toString().padStart(2, "0");
+ const day = time.getDate().toString().padStart(2, "0");
+ return `${year}/${month}/${day}`;
+ },
+ getTop(time) {
+ let tiemData = new Date(time);
+ return (tiemData.getHours() - 7 + tiemData.getMinutes() / 60) * 50 + "px";
+ },
+ getHeight(beginTime, endTime) {
+ let time = new Date(beginTime);
+ let timeA = new Date(endTime);
+ return ((timeA - time) / 1000 / 60 / 60) * 50 + "px";
+ },
+ lookDetails(i) {
+ const month = (this.time.getMonth() + 1).toString().padStart(2, "0");
+ const day = this.time.getDate().toString().padStart(2, "0");
+ this.drawerTime = `${month}/${day}(${this.getDayOfWeek(this.time)})`;
+ this.headerTime =
+ new Date(i.beginTime).getHours().toString().padStart(2, "0") +
+ ":" +
+ new Date(i.beginTime).getMinutes().toString().padStart(2, "0") +
+ "-" +
+ new Date(i.endTime).getHours().toString().padStart(2, "0") +
+ ":" +
+ new Date(i.endTime).getMinutes().toString().padStart(2, "0");
+ this.formData = i;
+ this.drawer = true;
+ },
+ getDayOfWeek(timestamp) {
+ const days = ["鍛ㄦ棩", "鍛ㄤ竴", "鍛ㄤ簩", "鍛ㄤ笁", "鍛ㄥ洓", "鍛ㄤ簲", "鍛ㄥ叚"];
+ const date = new Date(timestamp);
+ return days[date.getDay()];
},
},
};
</script>
+<style scoped>
+.table_box {
+ overflow-x: auto;
+ white-space: nowrap;
+}
+.header_box {
+ height: 50px;
+ width: 200px;
+ border: 2px solid rgb(165, 165, 165);
+ background-color: rgb(212, 241, 255);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+#header_boxA {
+ border-left: none;
+}
+.body_box {
+ height: 50px;
+ width: 200px;
+ border: 2px solid rgb(165, 165, 165);
+ border-top: none;
+}
+</style>
diff --git a/src/views/development/index.vue b/src/views/development/index.vue
index c619222..26bd43e 100644
--- a/src/views/development/index.vue
+++ b/src/views/development/index.vue
@@ -1,124 +1,202 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="鍏ㄩ儴" name="first">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夋爣棰樻悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ <div class="app-container">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="鍏ㄩ儴" name="all">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夋爣棰樻悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="鏍囬">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.name
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="鍒嗙被" width="80">
- <template slot-scope=""> 鐢� </template>
- </el-table-column>
- <el-table-column label="璋佸惁鍏紑" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="鐝骇" width="200">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="瀛﹀憳" width="">
- <template slot-scope=""> asfiaf </template>
+ <el-table-column label="鍒嗙被" width="" prop="category">
</el-table-column>
<el-table-column label="鏁欏笀" width="">
- <template slot-scope=""> 鐐硅瘎 </template>
+ <template slot-scope="scope">{{
+ scope.row.publisher.name
+ }}</template>
</el-table-column>
- <el-table-column label="鍐呭" width="">
- <template slot-scope=""> 鐐硅瘎 </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 淇敼 </template>
+ <el-table-column label="鐐硅瘎鏃堕棿" width="" prop="createTime">
</el-table-column>
</el-table>
- </el-tab-pane>
- <el-tab-pane label="璇剧▼" name="fourth">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夊鍛樺悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="璇剧▼" name="other">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夊鍛樺悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button slot="append" icon="el-icon-search" @click="fetchData"></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="璇剧▼">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.courseName
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="鏃堕棿" width="80">
- <template slot-scope=""> 鐢� </template>
+ <el-table-column label="寮�濮嬫椂闂�" width="" prop="beginTime">
</el-table-column>
- <el-table-column label="瀛﹀憳鏁�" width="200">
- <template slot-scope=""> 10086 </template>
+ <el-table-column label="缁撴潫鏃堕棿" width="" prop="endTime">
</el-table-column>
- <el-table-column label="宸茶褰曟暟" width="200">
- <template slot-scope=""> asfiaf </template>
+ <el-table-column label="瀛﹀憳鏁�" width="" prop="playerCount">
</el-table-column>
- <el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 璁板綍 </template>
+ <el-table-column label="宸茶褰曟暟" width="" prop="commentCount">
</el-table-column>
</el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </template>
-
- <script>
- import { getList } from "@/api/table";
-
- export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
- },
- },
- data() {
- return {
- list: null,
- listLoading: true,
- activeName: "first",
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+</template>
+
+<script>
+import { getHomeworkByType, getSessionHomeworkDto } from "@/api/development";
+
+export default {
+ filters: {
+ statusFilter(status) {
+ const statusMap = {
+ published: "success",
+ draft: "gray",
+ deleted: "danger",
};
+ return statusMap[status];
},
- created() {
- this.fetchData();
+ },
+ data() {
+ return {
+ list: null,
+ listLoading: true,
+ activeName: "all",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: [
+ {
+ name: "name", //鎺掑簭瀛楁鍚嶇О
+ direction: "ASC", //鎺掑簭鏂瑰悜
+ },
+ {
+ name: "createTime",
+ direction: "DESC",
+ },
+ ],
+ },
+ homeworkType: "GROWTH",
+ },
+ };
+ },
+ created() {
+ this.fetchData();
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
},
- methods: {
- fetchData() {
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
+ this.listLoading = true;
+ if (this.activeName == "all") {
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
+ getHomeworkByType(this.data).then((response) => {
+ this.list = response.data.findHomeworkByType.ls;
+ this.total = response.data.findHomeworkByType.pageOut.total;
this.listLoading = false;
});
- },
+ } else if (this.activeName == "other") {
+ this.listLoading = true;
+ let data = {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ data.pageIn.sorts = {
+ direction: "DESC",
+ name: "beginTime",
+ };
+ getSessionHomeworkDto(data).then((response) => {
+ this.list = response.data.findSessionHomeworkDto.ls;
+ this.total = response.data.findSessionHomeworkDto.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
- };
- </script>
-
\ No newline at end of file
+ },
+};
+</script>
diff --git a/src/views/home/components/chart.vue b/src/views/home/components/chart.vue
new file mode 100644
index 0000000..aa5e300
--- /dev/null
+++ b/src/views/home/components/chart.vue
@@ -0,0 +1,67 @@
+<template>
+ <div class="dashboard-container">
+ <div :id="data.value" style="height: 260px; width: 100%"></div>
+ </div>
+</template>
+
+<script>
+import * as echarts from "echarts";
+
+export default {
+ name: "Chart",
+ props:{
+ data: {
+ type: Object,
+ }
+ },
+ mounted() {
+ this.loadEcharts();
+ },
+ methods: {
+ //鍔犺浇echarts
+ loadEcharts() {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ var myChart = echarts.init(document.getElementById(this.data.value));
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ title: {
+ text: this.data.lable,
+ },
+ xAxis: {
+ type: "category",
+ data: [
+ "8鏈�4鍙�",
+ "8鏈�4鍙�",
+ "8鏈�4鍙�",
+ "8鏈�4鍙�",
+ "8鏈�4鍙�",
+ "8鏈�4鍙�",
+ "8鏈�4鍙�",
+ ],
+ },
+ yAxis: {
+ type: "value",
+ },
+ series: [
+ {
+ data: [150, 230, 224, 218, 135, 147, 260],
+ type: "line",
+ },
+ ],
+ });
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.dashboard {
+ &-container {
+ margin: 30px;
+ }
+ &-text {
+ font-size: 30px;
+ line-height: 46px;
+ }
+}
+</style>
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 0824cae..c9254e9 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,29 +1,56 @@
<template>
<div class="dashboard-container">
- <div class="dashboard-text">name: {{ name }}</div>
<el-button @click="getUserDate">鐧诲綍</el-button>
+ <div>
+ <div>
+ <Chart :data="data1"></Chart>
+ </div>
+ <div>
+ <Chart :data="data2"></Chart>
+ </div>
+ <div>
+ <Chart :data="data3"></Chart>
+ </div>
+ </div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import { login } from "@/api/user";
+import Chart from "./components/chart.vue";
export default {
name: "Dashboard",
+ components: {
+ Chart,
+ },
computed: {
...mapGetters(["name"]),
},
- created() {
- // this.getUserDate();
+ data(){
+ return{
+ data1:{
+ value:'course',
+ lable:'璇炬秷'
+ },
+ data2:{
+ value:'student',
+ lable:'瀛﹀憳'
+ },
+ data3:{
+ value:'class',
+ lable:'鑰冨嫟'
+ }
+ }
},
+ mounted() {},
methods: {
getUserDate() {
login({
- code: "061akYFa14JATH0EzoIa1NNVTC3akYFI"
- }
- ).then((res) => {
- localStorage.setItem('user',JSON.stringify(res.data))
+ code: "0913JF000eW6BS1rZ3100FQTUM03JF05",
+ }).then((res) => {
+ localStorage.setItem("user", JSON.stringify(res.data));
});
},
},
diff --git a/src/views/integral/index.vue b/src/views/integral/index.vue
index f2ff00c..9104d43 100644
--- a/src/views/integral/index.vue
+++ b/src/views/integral/index.vue
@@ -1,106 +1,195 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="鎸夊鍛�" name="first">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夋爣棰樻悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ <div class="app-container">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="鎸夊鍛�" name="student">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夋爣棰樻悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="濮撳悕">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.playerName
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="绉垎" width="80">
- <template slot-scope=""> 鐢� </template>
+ <el-table-column label="绉垎" width="" prop="qty">
</el-table-column>
- <el-table-column label="鏇存柊鏃堕棿" width="200">
- <template slot-scope=""> 10086 </template>
+ <el-table-column label="鏇存柊鏃堕棿" width="" prop="modifyTime">
</el-table-column>
<el-table-column label="鎿嶄綔" width="">
<template slot-scope=""> 鍏戞崲 鍙戞斁 </template>
</el-table-column>
</el-table>
- </el-tab-pane>
- <el-tab-pane label="鎸夌彮绾�" name="fourth">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夊鍛樺悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="鎸夌彮绾�" name="class">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夊鍛樺悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="鐝骇">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.team.name
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="瀛﹀憳浜烘暟" width="80">
- <template slot-scope=""> 鐢� </template>
+ <el-table-column label="瀛﹀憳浜烘暟" width="" prop="playerCount">
</el-table-column>
<el-table-column label="鎿嶄綔" width="">
<template slot-scope=""> 鍙戞斁 </template>
</el-table-column>
</el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </template>
-
- <script>
- import { getList } from "@/api/table";
-
- export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
- },
- },
- data() {
- return {
- list: null,
- listLoading: true,
- activeName: "first",
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+</template>
+
+<script>
+import { getPlayerScore, getTeamDtoAll } from "@/api/integral";
+
+export default {
+ filters: {
+ statusFilter(status) {
+ const statusMap = {
+ published: "success",
+ draft: "gray",
+ deleted: "danger",
};
+ return statusMap[status];
},
- created() {
- this.fetchData();
+ },
+ data() {
+ return {
+ list: null,
+ listLoading: true,
+ activeName: "student",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: [
+ { name: "v.id", direction: "DESC" },
+ { name: "acc.modify_time", direction: "DESC" },
+ ],
+ },
+ },
+ };
+ },
+ created() {
+ this.fetchData();
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
},
- methods: {
- fetchData() {
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
+ this.listLoading = true;
+ if (this.activeName == "student") {
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
+ getPlayerScore(this.data).then((response) => {
+ this.list = response.data.findPlayerScore.ls;
+ this.total = response.data.findPlayerScore.pageOut.total;
this.listLoading = false;
});
- },
+ } else if (this.activeName == "class") {
+ this.listLoading = true;
+ let data = {
+ types: ["NORMAL"],
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ data.pageIn.sorts = [
+ { name: "createTime", direction: "DESC" },
+ { name: "name", direction: "ASC" },
+ ];
+ getTeamDtoAll(data).then((response) => {
+ this.list = response.data.findTeamDtoAll.ls;
+ this.total = response.data.findTeamDtoAll.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
- };
- </script>
-
\ No newline at end of file
+ },
+};
+</script>
diff --git a/src/views/rollCall/index.vue b/src/views/rollCall/index.vue
index a42846b..6f529cd 100644
--- a/src/views/rollCall/index.vue
+++ b/src/views/rollCall/index.vue
@@ -1,115 +1,291 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="鎸夊鍛�" name="first">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夋爣棰樻悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ <div class="app-container">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="鎸夊鍛�" name="student">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夋爣棰樻悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="濮撳悕">
- <template slot-scope=""> xxxxx </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.player.name
+ }}</el-link>
+ </template>
</el-table-column>
- <el-table-column label="璇惧寘/浼氬憳鍗�" width="80">
- <template slot-scope=""> 鐢� </template>
+ <el-table-column label="璇惧寘/浼氬憳鍗�" width="">
+ <template slot-scope="scope"
+ >{{ scope.row.voucher.name }}
+ </template>
</el-table-column>
- <el-table-column label="涓婅鏃ユ湡" width="200">
- <template slot-scope=""> 10086 </template>
+ <el-table-column label="浣欓" width="" prop="qty">
</el-table-column>
- <el-table-column label="璇剧▼鏃堕暱" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="寮�濮嬫椂闂�" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="璇炬秷鏁伴噺" width="200">
- <template slot-scope=""> 10086 </template>
+ <el-table-column label="鍒版湡鏃堕棿" width="" prop="endDate">
+ <template slot-scope="scope"
+ >{{ timeCompare(scope.row.endDate) }}
+ </template>
</el-table-column>
<el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 鍏戞崲 鍙戞斁 </template>
+ <template slot-scope=""> 鐐瑰悕 </template>
</el-table-column>
</el-table>
- </el-tab-pane>
- <el-tab-pane label="鎸夌彮绾�" name="fourth">
- <div style="display: flex; flex-direction: row-reverse">
- <div style="width: 300px">
- <el-input
- placeholder="鎸夊鍛樺悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="鎸夌彮绾�" name="class">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夊鍛樺悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="鐝骇">
- <template slot-scope=""> xxxxx </template>
- </el-table-column>
- <el-table-column label="瀛﹀憳浜烘暟" width="80">
- <template slot-scope=""> 鐢� </template>
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.name
+ }}</el-link>
+ </template>
</el-table-column>
<el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 鍙戞斁 </template>
+ <template slot-scope=""> 鐐瑰悕 </template>
</el-table-column>
</el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </template>
-
- <script>
- import { getList } from "@/api/table";
-
- export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
- },
- },
- data() {
- return {
- list: null,
- listLoading: true,
- activeName: "first",
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="鎸夎绋�" name="course">
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夎绋嬪悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
+ </div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
+ <el-table
+ v-loading="listLoading"
+ :data="list"
+ element-loading-text="Loading"
+ fit
+ height="100%"
+ >
+ <el-table-column label="璇剧▼">
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.courseName
+ }}</el-link>
+ </template>
+ </el-table-column>
+ <el-table-column label="寮�濮嬫椂闂�" width="" prop="beginTime">
+ </el-table-column>
+ <el-table-column label="缁撴潫鏃堕棿" width="" prop="endTime">
+ </el-table-column>
+ <el-table-column label="瀛﹀憳浜烘暟" width="" prop="playerCount">
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="">
+ <template slot-scope=""> 鐐瑰悕 </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+</template>
+
+<script>
+import {
+ getPlayerAccByStaffWithRollCall,
+ getTeamByStaffWithRollCall,
+ getUnCompleteSession,
+} from "@/api/rollCall";
+
+export default {
+ filters: {
+ statusFilter(status) {
+ const statusMap = {
+ published: "success",
+ draft: "gray",
+ deleted: "danger",
};
+ return statusMap[status];
},
- created() {
- this.fetchData();
+ },
+ data() {
+ return {
+ list: null,
+ listLoading: true,
+ activeName: "student",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: [
+ { name: "modifyTime", direction: "DESC" },
+ { name: "player.name", direction: "ASC" },
+ ],
+ },
+ },
+ };
+ },
+ created() {
+ this.fetchData();
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
},
- methods: {
- fetchData() {
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
+ this.listLoading = true;
+ if (this.activeName == "student") {
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
+ getPlayerAccByStaffWithRollCall(this.data).then((response) => {
+ this.list = response.data.findPlayerAccByStaffWithRollCall.ls;
+ this.total =
+ response.data.findPlayerAccByStaffWithRollCall.pageOut.total;
this.listLoading = false;
});
- },
+ } else if (this.activeName == "class") {
+ this.listLoading = true;
+ let data = {
+ types: ["NORMAL"],
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ data.pageIn.sorts = [
+ { name: "modifyTime", direction: "DESC" },
+ { name: "name", direction: "ASC" },
+ ];
+ getTeamByStaffWithRollCall(data).then((response) => {
+ this.list = response.data.findTeamByStaffWithRollCall.ls;
+ this.total = response.data.findTeamByStaffWithRollCall.pageOut.total;
+ this.listLoading = false;
+ });
+ } else if (this.activeName == "course") {
+ this.listLoading = true;
+ let data = {
+ completeTypes: ["ROLL_CALL"],
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ data.pageIn.sorts = [
+ { name: "s.begin_time", direction: "DESC" },
+ { name: "courseName", direction: "ASC" },
+ ];
+ getUnCompleteSession(data).then((response) => {
+ this.list = response.data.findUnCompleteSession.ls;
+ this.total = response.data.findUnCompleteSession.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
- };
- </script>
-
\ No newline at end of file
+ timeCompare(time) {
+ if (!time) {
+ return "";
+ }
+ let timeDate = new Date(time);
+ let nowTime = new Date();
+ if (nowTime > timeDate) {
+ return time + "(宸茶繃鏈�)";
+ } else {
+ return time;
+ }
+ },
+ },
+};
+</script>
diff --git a/src/views/scheduleCourses/index.vue b/src/views/scheduleCourses/index.vue
index 86d6c25..08aebe3 100644
--- a/src/views/scheduleCourses/index.vue
+++ b/src/views/scheduleCourses/index.vue
@@ -1,112 +1,151 @@
<template>
- <div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="鍏ㄩ儴" name="first" />
- <el-tab-pane label="宸插仠鐢�" name="fourth" />
- </el-tabs>
- <div style="display: flex; flex-direction: row-reverse;">
- <div style="width: 300px;">
- <el-input
- placeholder="鎸夎绋嬪悕绉版悳绱�"
- v-model="input3"
- class="input-with-select"
- size="small"
- >
- <el-button slot="append" icon="el-icon-search"></el-button>
- </el-input>
- </div>
+ <div class="app-container">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="鍏ㄩ儴" name="all" />
+ <el-tab-pane label="宸插仠鐢�" name="deactivated" />
+ </el-tabs>
+ <div style="display: flex; flex-direction: row-reverse">
+ <div style="width: 300px">
+ <el-input
+ placeholder="鎸夎绋嬪悕绉版悳绱�"
+ v-model="data.keyword"
+ class="input-with-select"
+ size="small"
+ >
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
+ </el-input>
</div>
+ </div>
+ <div style="height: calc(100vh - 248px)">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
fit
+ height="100%"
>
<el-table-column label="璇剧▼鍚嶇О">
- <template slot-scope=""> xxxxx </template>
- </el-table-column>
- <el-table-column label="鐝骇鍚嶇О" width="80">
- <template slot-scope=""> 鐢� </template>
- </el-table-column>
- <el-table-column label="绫诲瀷" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="璇捐妭甯傚満(鍒嗛挓)" width="200">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="浜烘暟涓婇檺" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="娑堣鏂瑰紡" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="棰滆壊" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鎻忚堪" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 淇敼 鍋滅敤 </template>
- </el-table-column>
- <!-- <el-table-column label="Author" width="110" align="center">
<template slot-scope="scope">
- <span>{{ scope.row.author }}</span>
+ <el-link type="primary" :underline="false">{{
+ scope.row.name
+ }}</el-link>
</template>
</el-table-column>
- <el-table-column label="Pageviews" width="110" align="center">
+ <el-table-column
+ label="鍋滅敤鏃堕棿"
+ width="200"
+ v-if="activeName == 'deactivated'"
+ >
<template slot-scope="scope">
- {{ scope.row.pageviews }}
+ {{ scope.row.modifyTime }}
</template>
</el-table-column>
- <el-table-column class-name="status-col" label="Status" width="110" align="center">
- <template slot-scope="scope">
- <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag>
+ <el-table-column
+ label="鎿嶄綔"
+ width="200"
+ v-if="activeName == 'deactivated'"
+ >
+ <template slot-scope="">
+ <el-link type="primary" :underline="false">鎭㈠</el-link>
</template>
</el-table-column>
- <el-table-column align="center" prop="created_at" label="Display_time" width="200">
- <template slot-scope="scope">
- <i class="el-icon-time" />
- <span>{{ scope.row.display_time }}</span>
- </template>
- </el-table-column> -->
</el-table>
</div>
- </template>
-
- <script>
- import { getList } from "@/api/table";
-
- export default {
- filters: {
- statusFilter(status) {
- const statusMap = {
- published: "success",
- draft: "gray",
- deleted: "danger",
- };
- return statusMap[status];
- },
- },
- data() {
- return {
- list: null,
- listLoading: true,
- activeName: "first",
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
+ </div>
+</template>
+
+<script>
+import { getCourse, getDeletedItem } from "@/api/scheduleCourses";
+
+export default {
+ filters: {
+ statusFilter(status) {
+ const statusMap = {
+ published: "success",
+ draft: "gray",
+ deleted: "danger",
};
+ return statusMap[status];
},
- created() {
- this.fetchData();
+ },
+ data() {
+ return {
+ list: null,
+ listLoading: true,
+ activeName: "all",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: {
+ name: "name", //鎺掑簭瀛楁鍚嶇О
+ direction: "ASC", //鎺掑簭鏂瑰悜
+ },
+ },
+ types: ["BOOKING_NONE", "BOOKING_TIME_STAFF", "BOOKING_TIME_PLACE"],
+ },
+ };
+ },
+ created() {
+ this.fetchData();
+ },
+ methods: {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
},
- methods: {
- fetchData() {
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
+ this.listLoading = true;
+ if (this.activeName == "all") {
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
+ getCourse(this.data).then((response) => {
+ this.list = response.data.findCourse.ls;
+ this.total = response.data.findCourse.pageOut.total;
this.listLoading = false;
});
- },
+ } else if (this.activeName == "deactivated") {
+ this.listLoading = true;
+ let data = {
+ itemType: "COURSE",
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ getDeletedItem(data).then((response) => {
+ this.list = response.data.findDeletedItem.ls;
+ this.total = response.data.findDeletedItem.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
- };
- </script>
-
\ No newline at end of file
+ },
+};
+</script>
diff --git a/src/views/student/components/create.vue b/src/views/student/components/create.vue
index 2dc2037..5a8c4a2 100644
--- a/src/views/student/components/create.vue
+++ b/src/views/student/components/create.vue
@@ -42,6 +42,35 @@
</el-option>
</el-select>
</el-form-item>
+ <el-form-item label="璇炬椂" style="width: 400px">
+ <el-input-number v-model="num" size="small"></el-input-number>
+ </el-form-item>
+ <el-form-item label="缂磋垂" style="width: 400px">
+ <el-input-number
+ v-model="num"
+ size="small"
+ style="width: 200px"
+ ></el-input-number>
+ </el-form-item>
+ <el-form-item label="鏈夋晥鏈�" style="width: 400px">
+ <div>
+ <el-radio-group v-model="lifespan" @input="lifespanChange" size="mini">
+ <el-radio-button label="month">涓�鏈�</el-radio-button>
+ <el-radio-button label="year">涓�骞�</el-radio-button>
+ <el-radio-button label="longTerm">闀挎湡</el-radio-button>
+ <el-radio-button label="custom">鑷畾涔�</el-radio-button>
+ </el-radio-group>
+ </div>
+ <div>
+ <el-date-picker
+ v-model="createData.endDate"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ size="small"
+ >
+ </el-date-picker>
+ </div>
+ </el-form-item>
<el-form-item label="璇剧▼椤鹃棶">
<el-select
v-model="createData.voucherId"
@@ -96,16 +125,16 @@
return {
dialogVisible: false,
createData: {
- beginDate: "",
+ beginDate: new Date(),
birthday: null,
description: "",
detailDescription: "",
- endDate: "",
+ endDate: new Date(),
amt: 0,
freezeQty: 0,
gender: "鐢�",
mobile: "",
- orgId: "", //鏈烘瀯
+ orgId: 25, //鏈烘瀯
playerId: null,
playerName: "",
qty: 0,
@@ -119,6 +148,7 @@
},
saleManList: [],
voucherList: [],
+ lifespan:''
};
},
created() {},
@@ -152,6 +182,9 @@
goDetails(row) {
this.$router.push("/details");
},
+ lifespanChange(val){
+ console.log(val);
+ }
},
};
</script>
diff --git a/src/views/student/index.vue b/src/views/student/index.vue
index d91dae9..3a28c1b 100644
--- a/src/views/student/index.vue
+++ b/src/views/student/index.vue
@@ -6,8 +6,9 @@
<el-tab-pane label="宸茶繃鏈�" name="expired" />
<el-tab-pane label="宸插仠鐢�" name="deactivated" />
</el-tabs>
- <div style="display: flex; justify-content: space-between;">
- <el-button type="primary" size="small" @click="showCreate">鏂板缓瀛﹀憳</el-button>
+ <div style="display: flex; justify-content: space-between">
+ <!-- <el-button type="primary" size="small" @click="showCreate">鏂板缓瀛﹀憳</el-button> -->
+ <el-button type="primary" size="small">瀵煎嚭瀛﹀憳</el-button>
<div style="width: 300px">
<el-input
placeholder="鎸夊鍚嶆悳绱�"
@@ -18,43 +19,82 @@
<el-button
slot="append"
icon="el-icon-search"
- @click="fetchData"
+ @click="handleClick"
></el-button>
</el-input>
</div>
</div>
- <el-table
- v-loading="listLoading"
- :data="list"
- element-loading-text="Loading"
- fit
- >
- <el-table-column label="濮撳悕" prop="">
- <template slot-scope="scope">
- <el-link
+ <div style="height: calc(100vh - 248px)">
+ <el-table
+ v-loading="listLoading"
+ :data="list"
+ element-loading-text="Loading"
+ fit
+ height="100%"
+ >
+ <el-table-column label="濮撳悕" prop="">
+ <template slot-scope="scope">
+ <el-link
type="primary"
:underline="false"
@click="goDetails(scope.row)"
>{{ scope.row.name }}</el-link
>
- </template>
- </el-table-column>
- <el-table-column label="鎬у埆" width="80">
- <template slot-scope="scope">
- {{ scope.row.gender == "FEMALE" ? "濂�" : "鐢�" }}
- </template>
- </el-table-column>
- <el-table-column label="鎵嬫満鍙�" width="200" prop="mobile">
- <template slot-scope="scope">
- {{ scope.row.mobile ? scope.row.mobile : "--" }}
- </template>
- </el-table-column>
- <el-table-column label="鏄惁缁戝畾寰俊" width="200">
- <template slot-scope="scope">
- {{ scope.row.user ? "鏄�" : "鍚�" }}
- </template>
- </el-table-column>
- </el-table>
+ <!-- <el-link type="primary" :underline="false">{{
+ scope.row.name
+ }}</el-link> -->
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎬у埆"
+ width="80"
+ v-if="activeName !== 'deactivated'"
+ >
+ <template slot-scope="scope">
+ {{ scope.row.gender == "FEMALE" ? "濂�" : "鐢�" }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎵嬫満鍙�"
+ width="200"
+ prop="mobile"
+ v-if="activeName !== 'deactivated'"
+ >
+ <template slot-scope="scope">
+ {{ scope.row.mobile ? scope.row.mobile : "--" }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鏄惁缁戝畾寰俊"
+ width="200"
+ v-if="activeName !== 'deactivated'"
+ >
+ <template slot-scope="scope">
+ {{ scope.row.user ? "鏄�" : "鍚�" }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ width="200"
+ v-if="activeName == 'deactivated'"
+ >
+ <template slot-scope="">
+ <el-link type="primary" :underline="false">鍒犻櫎</el-link>
+
+ <el-link type="primary" :underline="false">鎭㈠</el-link>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍋滅敤鏃堕棿"
+ width="200"
+ v-if="activeName == 'deactivated'"
+ >
+ <template slot-scope="scope">
+ {{ scope.row.modifyTime }}
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
<div>
<el-pagination
@size-change="handleSizeChange"
@@ -67,13 +107,13 @@
>
</el-pagination>
</div>
- <StudentCreate ref="studentCreate"/>
+ <StudentCreate ref="studentCreate" />
</div>
</template>
<script>
import { getData, getRenew, getExpire, getDeleted } from "@/api/student";
-import StudentCreate from './components/create.vue'
+import StudentCreate from "./components/create.vue";
export default {
filters: {
@@ -86,7 +126,7 @@
return statusMap[status];
},
},
- components:{
+ components: {
StudentCreate,
},
data() {
@@ -96,7 +136,7 @@
activeName: "all",
total: 0,
data: {
- staffId: JSON.parse(localStorage.getItem('user')).staffs[0].id,
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
keyword: "",
pageIn: {
//鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
@@ -124,11 +164,11 @@
},
handleSizeChange(val) {
this.data.pageIn.size = val;
- this.fetchData();
+ this.handleClick();
},
handleCurrentChange(val) {
this.data.pageIn.index = val - 1;
- this.fetchData();
+ this.handleClick();
},
handleClick(tab, event) {
if (this.activeName == "pendingFees") {
@@ -149,9 +189,15 @@
this.fetchData();
} else if (this.activeName == "deactivated") {
this.listLoading = true;
- getExpire(this.data).then((response) => {
- this.list = response.data.findPlayerExpire.ls;
- this.total = response.data.findPlayerExpire.pageOut.total;
+ let data = {
+ itemType: "PLAYER",
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ getDeleted(data).then((response) => {
+ this.list = response.data.findDeletedItem.ls;
+ this.total = response.data.findDeletedItem.pageOut.total;
this.listLoading = false;
});
}
@@ -164,9 +210,9 @@
},
});
},
- showCreate(){
- this.$refs.studentCreate.showDialog()
- }
+ showCreate() {
+ this.$refs.studentCreate.showDialog();
+ },
},
};
</script>
diff --git a/src/views/work/index.vue b/src/views/work/index.vue
index 6049020..90e2f7f 100644
--- a/src/views/work/index.vue
+++ b/src/views/work/index.vue
@@ -1,87 +1,135 @@
<template>
<div class="app-container">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="浣滀笟" name="first">
+ <el-tabs v-model="activeName" @tab-click="fetchData">
+ <el-tab-pane label="浣滀笟" name="work">
<div style="display: flex; flex-direction: row-reverse">
<div style="width: 300px">
<el-input
placeholder="鎸変綔涓氬悕绉版悳绱�"
- v-model="input3"
+ v-model="data.keyword"
class="input-with-select"
size="small"
>
- <el-button slot="append" icon="el-icon-search"></el-button>
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
</el-input>
</div>
</div>
- <el-table
- v-loading="listLoading"
- :data="list"
- element-loading-text="Loading"
- fit
- >
- <el-table-column label="浣滀笟鍚嶇О">
- <template slot-scope=""> xxxxx </template>
- </el-table-column>
- <el-table-column label="鐝骇" width="80">
- <template slot-scope=""> 鐢� </template>
- </el-table-column>
- <el-table-column label="瀛﹀憳" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="鏁欏笀" width="200">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鎴鏃ユ湡" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鍐呭" width="">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="">
- <template slot-scope=""> 淇敼 </template>
- </el-table-column>
- </el-table>
+ <div style="height: calc(100vh - 248px)">
+ <el-table
+ v-loading="listLoading"
+ :data="list"
+ element-loading-text="Loading"
+ fit
+ height="100%"
+ >
+ <el-table-column label="浣滀笟鍚嶇О">
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.name
+ }}</el-link>
+ </template>
+ </el-table-column>
+ <el-table-column label="甯冪疆鏃堕棿" width="">
+ <
+ <template slot-scope="scope">
+ {{ scope.row.createTime }}
+ </template>
+ </el-table-column>
+ <el-table-column label="甯冪疆浜�" width="">
+ <template slot-scope="scope">
+ {{ scope.row.publisher.name }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="">
+ <template slot-scope=""> 澶嶅埗 </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
</el-tab-pane>
- <el-tab-pane label="鎵归槄" name="fourth">
+ <el-tab-pane label="鎵归槄" name="readOver">
<div style="display: flex; flex-direction: row-reverse">
<div style="width: 300px">
<el-input
placeholder="鎸夊鍛樺悕绉版悳绱�"
- v-model="input3"
+ v-model="data.keyword"
class="input-with-select"
size="small"
>
- <el-button slot="append" icon="el-icon-search"></el-button>
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="fetchData"
+ ></el-button>
</el-input>
</div>
</div>
- <el-table
- v-loading="listLoading"
- :data="list"
- element-loading-text="Loading"
- fit
- >
- <el-table-column label="瀛﹀憳">
- <template slot-scope=""> xxxxx </template>
- </el-table-column>
- <el-table-column label="鏃堕棿" width="80">
- <template slot-scope=""> 鐢� </template>
- </el-table-column>
- <el-table-column label="浣滀笟" width="200">
- <template slot-scope=""> 10086 </template>
- </el-table-column>
- <el-table-column label="鐐硅瘎" width="200">
- <template slot-scope=""> asfiaf </template>
- </el-table-column>
- </el-table>
+ <div style="height: calc(100vh - 248px)">
+ <el-table
+ v-loading="listLoading"
+ :data="list"
+ element-loading-text="Loading"
+ fit
+ height="100%"
+ >
+ <el-table-column label="瀛﹀憳">
+ <template slot-scope="scope">
+ <el-link type="primary" :underline="false">{{
+ scope.row.player.name
+ }}</el-link>
+ </template>
+ </el-table-column>
+ <el-table-column label="瀹屾垚鏃堕棿" width="">
+ <template slot-scope="scope">
+ {{ scope.row.createTime }}
+ </template>
+ </el-table-column>
+ <el-table-column label="浣滀笟" width="">
+ <template slot-scope="scope">
+ {{ scope.row.homework.name }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鐐硅瘎" width="">
+ <template slot-scope="scope">
+ {{ scope.row.lastStaffCommentId ? "宸茬偣璇�" : "鏈偣璇�" }}
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="data.pageIn.index + 1"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="data.pageIn.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+ </div>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
-import { getList } from "@/api/table";
+import { getHomeworkByType, getHomeworkCommentByAuth } from "@/api/work";
export default {
filters: {
@@ -98,19 +146,64 @@
return {
list: null,
listLoading: true,
- activeName: "first",
+ activeName: "work",
+ total: 0,
+ data: {
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: "",
+ pageIn: {
+ //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿��
+ index: 0, //蹇呴��
+ size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
+ sorts: {
+ name: "name", //鎺掑簭瀛楁鍚嶇О
+ direction: "ASC", //鎺掑簭鏂瑰悜
+ },
+ },
+ commentTypes: ["HOMEWORK"],
+ homeworkType: "HOMEWORK",
+ },
};
},
created() {
this.fetchData();
},
methods: {
- fetchData() {
+ handleSizeChange(val) {
+ this.data.pageIn.size = val;
+ this.fetchData("pageIn");
+ },
+ handleCurrentChange(val) {
+ this.data.pageIn.index = val - 1;
+ this.fetchData("pageIn");
+ },
+ fetchData(_val) {
+ if (_val !== "pageIn") {
+ this.data.pageIn.index = 0;
+ this.data.pageIn.size = 10;
+ }
this.listLoading = true;
- getList().then((response) => {
- this.list = response.data.items;
- this.listLoading = false;
- });
+ if (this.activeName == "work") {
+ this.listLoading = true;
+ getHomeworkByType(this.data).then((response) => {
+ this.list = response.data.findHomeworkByType.ls;
+ this.total = response.data.findHomeworkByType.pageOut.total;
+ this.listLoading = false;
+ });
+ } else if (this.activeName == "readOver") {
+ this.listLoading = true;
+ let data = {
+ commentTypes: ["PLAYER_REPLY"],
+ staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id,
+ keyword: this.data.keyword,
+ pageIn: { ...this.data.pageIn },
+ };
+ getHomeworkCommentByAuth(data).then((response) => {
+ this.list = response.data.findHomeworkCommentByAuth.ls;
+ this.total = response.data.findHomeworkCommentByAuth.pageOut.total;
+ this.listLoading = false;
+ });
+ }
},
},
};
diff --git a/vue.config.js b/vue.config.js
index 159032f..8d82eff 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -39,7 +39,7 @@
proxy: {
[process.env.VUE_APP_BASE_API]: {
// 鍖归厤鎵�鏈変互 '/dev-api'寮�澶寸殑璇锋眰璺緞
- target: "http://192.168.3.88:18080/dream_test", //绫讳技浜嶯ginx鍙嶅悜浠g悊
+ target: "http://192.168.3.87:18081/dream", //绫讳技浜嶯ginx鍙嶅悜浠g悊
changeOrigin: true, // 鏀寔璺ㄥ煙
pathRewrite: {
// 閲嶅啓璺緞: 鍘绘帀璺緞涓紑澶寸殑'/dev-api'
--
Gitblit v1.8.0