From d1f2399bd86479301e0907401f0075529fd1fd28 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期二, 10 九月 2024 14:07:50 +0800 Subject: [PATCH] 页面调整 --- /dev/null | 183 --------------------------------------------- src/views/student/index.vue | 15 +++ src/router/index.js | 13 --- 3 files changed, 15 insertions(+), 196 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index 787d80d..429adb9 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -85,19 +85,6 @@ { path: "/", component: Layout, - redirect: "/session", - children: [ - { - path: "/session", - name: "Session", - component: () => import("@/views/session/index"), - meta: { title: "鎶ュ憡", icon: "table" }, - }, - ], - }, - { - path: "/", - component: Layout, redirect: "/class", children: [ { diff --git a/src/views/session/components/create.vue b/src/views/session/components/create.vue deleted file mode 100644 index 5a8c4a2..0000000 --- a/src/views/session/components/create.vue +++ /dev/null @@ -1,190 +0,0 @@ -<template> - <div class="app-container"> - <el-dialog - title="娣诲姞瀛﹀憳" - :visible.sync="dialogVisible" - width="30%" - :before-close="handleClose" - > - <el-form ref="form" :model="createData" label-width="100px"> - <el-form-item label="濮撳悕" style="width: 400px"> - <el-input v-model="createData.playerName" size="small"></el-input> - </el-form-item> - <el-form-item label="鎬у埆" style="width: 400px"> - <el-input v-model="createData.gender" size="small"></el-input> - </el-form-item> - <el-form-item label="鐢熸棩"> - <el-date-picker - v-model="createData.birthday" - type="date" - placeholder="閫夋嫨鏃ユ湡" - size="small" - > - </el-date-picker> - </el-form-item> - <el-form-item label="鑱旂郴鐢佃瘽" style="width: 400px"> - <el-input v-model="createData.mobile" size="small"></el-input> - </el-form-item> - <el-form-item label="璇惧寘/浼氬憳鍗�"> - <el-select - v-model="createData.saleMan.id" - filterable - clearable - placeholder="璇烽�夋嫨" - size="small" - > - <el-option - v-for="item in saleManList" - :key="item.id" - :label="item.name" - :value="item.id" - > - </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" - filterable - clearable - placeholder="璇烽�夋嫨" - size="small" - > - <el-option - v-for="item in voucherList" - :key="item.id" - :label="item.name" - :value="item.id" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="澶囨敞" style="width: 400px"> - <el-input - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ娉�" - v-model="createData.description" - ></el-input> - </el-form-item> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogVisible = false" size="small">鍙� 娑�</el-button> - <el-button type="primary" @click="dialogVisible = false" size="small" - >纭� 瀹�</el-button - > - </span> - </el-dialog> - </div> -</template> - -<script> -import { getDetails, getSaleMan } from "@/api/student"; - -export default { - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "gray", - deleted: "danger", - }; - return statusMap[status]; - }, - }, - data() { - return { - dialogVisible: false, - createData: { - beginDate: new Date(), - birthday: null, - description: "", - detailDescription: "", - endDate: new Date(), - amt: 0, - freezeQty: 0, - gender: "鐢�", - mobile: "", - orgId: 25, //鏈烘瀯 - playerId: null, - playerName: "", - qty: 0, - saleMan: { - id: "", - name: "", - }, - staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id, - visibility: true, - voucherId: "", //璇惧寘/浼氬憳鍗� - }, - saleManList: [], - voucherList: [], - lifespan:'' - }; - }, - created() {}, - methods: { - showDialog() { - this.dialogVisible = true; - }, - getSaleManList() { - let data = { - staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id, - keyword: "", - pageIn: { - index: 0, - size: 999, - sorts: [ - { - name: "name", - direction: "ASC", - }, - { - name: "createTime", - direction: "DESC", - }, - ], - }, - }; - getSaleMan(data).then((response) => { - this.saleManList = response.data.findStaff.ls; - }); - }, - goDetails(row) { - this.$router.push("/details"); - }, - lifespanChange(val){ - console.log(val); - } - }, -}; -</script> diff --git a/src/views/session/components/details.vue b/src/views/session/components/details.vue deleted file mode 100644 index 6fd1646..0000000 --- a/src/views/session/components/details.vue +++ /dev/null @@ -1,185 +0,0 @@ -<template> - <div class="app-container"> - <div - style="margin-bottom: 20px; display: flex; flex-direction: row-reverse" - > - <div> - <el-button type="primary" size="small">璇剧▼</el-button> - <el-button type="primary" size="small">鐝骇</el-button> - <el-button type="danger" size="small">缁垂</el-button> - <el-button type="primary" size="small">鎴愰暱</el-button> - <el-button type="primary" size="small">浣滀笟</el-button> - <el-button type="primary" size="small">鍋滅敤</el-button> - </div> - </div> - <div> - <el-form ref="form" :model="detailsData" label-width="100px"> - <el-form-item label="濮撳悕" style="width: 400px"> - <el-input v-model="detailsData.name" size="small"></el-input> - </el-form-item> - <el-form-item label="鎬у埆" style="width: 400px"> - <el-input v-model="detailsData.gender" size="small"></el-input> - </el-form-item> - <el-form-item label="鐢熸棩"> - <el-date-picker - v-model="detailsData.birthday" - type="date" - placeholder="閫夋嫨鏃ユ湡" - size="small" - > - </el-date-picker> - </el-form-item> - <el-form-item label="鑱旂郴鐢佃瘽" style="width: 400px"> - <el-input v-model="detailsData.mobile" size="small"></el-input> - </el-form-item> - <el-form-item label="鐓х墖"> - <el-image - fit="cover" - v-if="detailsData.avatars && detailsData.avatars.length" - style="width: 200px; height: 200px" - :src="'https://s.9village.cn/' + detailsData.avatars[0].url2" - :preview-src-list="[ - 'https://s.9village.cn/' + detailsData.avatars[0].origin, - ]" - > - </el-image> - </el-form-item> - <el-form-item label="璇剧▼椤鹃棶"> - <el-select - v-model="detailsData.saleMan.id" - filterable - clearable - placeholder="璇烽�夋嫨" - size="small" - > - <el-option - v-for="item in saleManList" - :key="item.id" - :label="item.name" - :value="item.id" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label="澶囨敞" style="width: 400px"> - <el-input - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ娉�" - v-model="detailsData.description" - ></el-input> - </el-form-item> - <el-form-item label="璐︽埛" style="width: 800px"> - <el-table :data="detailsData.accs" fit> - <el-table-column label="璇剧▼" prop=""> - <template slot-scope="scope"> - {{ scope.row.voucher.name }} - </template> - </el-table-column> - <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="鏁伴噺" prop="qty" /> - <el-table-column label="閲戦" prop="amt" /> - <el-table-column label="鍒版湡鏃堕棿" prop="endDate" /> - <el-table-column label="" prop=""> - <template slot-scope="scope"> - <el-link - type="primary" - :underline="false" - @click="goDetails(scope.row)" - >鏌ョ湅鏄庣粏</el-link - > - </template> - </el-table-column> - </el-table> - </el-form-item> - <el-form-item - label="" - style="width: 500px; display: flex; justify-content: space-around" - > - <el-button size="small">鍙栨秷</el-button> - <el-button type="primary" size="small">淇濆瓨</el-button> - </el-form-item> - </el-form> - </div> - </div> -</template> - -<script> -import { getDetails, getSaleMan } from "@/api/student"; - -export default { - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "gray", - deleted: "danger", - }; - return statusMap[status]; - }, - }, - data() { - return { - detailsData: { - saleMan: [{ id: "", name: "" }], - }, - saleManList: [], - }; - }, - created() { - this.getSaleManList(); - this.fetchData(); - }, - methods: { - fetchData() { - let data = { id: Number(this.$route.query.id) }; - getDetails(data).then((response) => { - this.detailsData = response.data.findPlayerDto; - this.detailsData.gender = - this.detailsData.gender == "FEMALE" ? "濂�" : "鐢�"; - if ( - response.data.findPlayerDto.saleMan && - response.data.findPlayerDto.saleMan.length !== 0 - ) { - this.detailsData.saleMan.id = String(this.detailsData.saleMan.id); - } - }); - }, - getSaleManList() { - let data = { - staffId: JSON.parse(localStorage.getItem("user")).staffs[0].id, - keyword: "", - pageIn: { - index: 0, - size: 999, - sorts: [ - { - name: "name", - direction: "ASC", - }, - { - name: "createTime", - direction: "DESC", - }, - ], - }, - }; - getSaleMan(data).then((response) => { - this.saleManList = response.data.findStaff.ls; - }); - }, - goDetails(row) { - this.$router.push("/details"); - }, - }, -}; -</script> diff --git a/src/views/session/index.vue b/src/views/session/index.vue deleted file mode 100644 index 28d3e40..0000000 --- a/src/views/session/index.vue +++ /dev/null @@ -1,183 +0,0 @@ -<template> - <div class="app-container"> - <el-tabs v-model="activeName" @tab-click="handleClick"> - <el-tab-pane label="鍏ㄩ儴" name="all" /> - <el-tab-pane label="寰呯画璐�" name="pendingFees" /> - <el-tab-pane label="宸茶繃鏈�" name="expired" /> - <el-tab-pane label="宸插仠鐢�" name="deactivated" /> - </el-tabs> - <div style="display: flex;"> - <el-date-picker v-model="dateRange" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" style="margin-right: 10px"> - </el-date-picker> - <el-button type="primary" size="small" @click="handleExport">瀵煎嚭</el-button> - </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="濮撳悕" prop=""> - <template slot-scope="scope"> - <el-link type="primary" :underline="false" @click="goDetails(scope.row)">{{ scope.row.name }}</el-link> - <!-- <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" @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> - <StudentCreate ref="studentCreate" /> - </div> -</template> - -<script> -import { getData, getRenew, getExpire, getDeleted, handleExport } from "@/api/student"; -import StudentCreate from "./components/create.vue"; - -export default { - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "gray", - deleted: "danger", - }; - return statusMap[status]; - }, - }, - components: { - StudentCreate, - }, - data() { - return { - dateRange: "", - 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", //鎺掑簭鏂瑰悜 - }, - }, - }, - }; - }, - created() { - this.fetchData(); - }, - methods: { - formatDate (date) { - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - return `${year}-${month}-${day}`; - }, - handleExport() { - if (this.dateRange.length == 0) { - this.$message.warning("璇烽�夋嫨鏃ユ湡鑼冨洿"); - return; - } - this.download('exportReport?startDate=' + this.formatDate(this.dateRange[0]) + '&endDate=' + this.formatDate(this.dateRange[1]), { - }, `瀵煎嚭_${new Date().getTime()}.xlsx`) - }, - fetchData() { - this.listLoading = true; - getData(this.data).then((response) => { - this.list = response.data.findPlayerByStaff.ls; - this.total = response.data.findPlayerByStaff.pageOut.total; - this.listLoading = false; - }); - }, - handleSizeChange(val) { - this.data.pageIn.size = val; - this.handleClick(); - }, - handleCurrentChange(val) { - this.data.pageIn.index = val - 1; - this.handleClick(); - }, - handleClick(tab, event) { - if (this.activeName == "pendingFees") { - this.listLoading = true; - getRenew(this.data).then((response) => { - this.list = response.data.findPlayerRenew.ls; - this.total = response.data.findPlayerRenew.pageOut.total; - this.listLoading = false; - }); - } else if (this.activeName == "expired") { - this.listLoading = true; - getExpire(this.data).then((response) => { - this.list = response.data.findPlayerExpire.ls; - this.total = response.data.findPlayerExpire.pageOut.total; - this.listLoading = false; - }); - } else if (this.activeName == "all") { - this.fetchData(); - } else if (this.activeName == "deactivated") { - this.listLoading = true; - 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; - }); - } - }, - goDetails(row) { - this.$router.push({ - name: "StudentDetails", - query: { - id: row.id, - }, - }); - }, - showCreate() { - this.$refs.studentCreate.showDialog(); - }, - }, -}; -</script> diff --git a/src/views/student/index.vue b/src/views/student/index.vue index c9f5af7..9e17455 100644 --- a/src/views/student/index.vue +++ b/src/views/student/index.vue @@ -9,6 +9,12 @@ <div style="display: flex; justify-content: space-between"> <!-- <el-button type="primary" size="small" @click="showCreate">鏂板缓瀛﹀憳</el-button> --> <el-button type="primary" size="small" @click="handleExport">瀵煎嚭瀛﹀憳</el-button> + <div style="width: 500px"> + <el-date-picker v-model="dateRange" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" value-format="yyyy-MM-dd" style="margin-right: 10px"> + </el-date-picker> + <el-button type="primary" @click="handleExport2">瀵煎嚭璇惧寘</el-button> + </div> <div style="width: 300px"> <el-input placeholder="鎸夊鍚嶆悳绱�" @@ -131,6 +137,7 @@ }, data() { return { + dateRange: [], list: null, listLoading: true, activeName: "all", @@ -158,6 +165,14 @@ this.download('exportPlayer', { }, `瀵煎嚭_${new Date().getTime()}.xlsx`) }, + handleExport2() { + if (this.dateRange.length == 0) { + this.$message.warning("璇烽�夋嫨鏃ユ湡鑼冨洿"); + return; + } + this.download('exportReport?startDate=' + this.dateRange[0] + '&endDate=' + this.dateRange[1], { + }, `瀵煎嚭_${new Date().getTime()}.xlsx`) + }, fetchData() { this.listLoading = true; getData(this.data).then((response) => { -- Gitblit v1.8.0