|
@@ -0,0 +1,335 @@
|
|
|
+<template>
|
|
|
+ <div class="forecastName m-container">
|
|
|
+ <h2>
|
|
|
+ <el-page-header @back="onCancel" :content="teamName"></el-page-header>
|
|
|
+ </h2>
|
|
|
+
|
|
|
+ <!-- <p style="margin-bottom: 15px; font-size: 18px; font-weight: 400">
|
|
|
+ 缴费截止时间:{{ '2020-12-12' | formatTimer }}
|
|
|
+ </p> -->
|
|
|
+
|
|
|
+ <div class="btnList">
|
|
|
+ <auth :auths="['/main']">
|
|
|
+ <el-button type="primary" @click="codeStatus = true">预报名链接</el-button>
|
|
|
+ </auth>
|
|
|
+ <!-- <auth>
|
|
|
+ <el-button type="primary" @click="extendPaymentStatus = true">预报名时间延长</el-button>
|
|
|
+ </auth> -->
|
|
|
+ <auth>
|
|
|
+ <el-button type="primary">家长会通知</el-button>
|
|
|
+ </auth>
|
|
|
+ <auth :auths="['musicGroup/finishPreApply']">
|
|
|
+ <el-button type="primary" @click="onPaymentGroup">乐团缴费</el-button>
|
|
|
+ </auth>
|
|
|
+ <auth :auths="['musicGroup/finishPreApply/item']">
|
|
|
+ <el-button type="primary" @click="onPaymentGroup(1)">特色乐团缴费</el-button>
|
|
|
+ </auth>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="m-core">
|
|
|
+ <save-form
|
|
|
+ :inline="true"
|
|
|
+ @reset="onReSet"
|
|
|
+ @submit="search"
|
|
|
+ :model="searchForm"
|
|
|
+ ref="searchForm"
|
|
|
+ >
|
|
|
+ <el-form-item>
|
|
|
+ <el-input
|
|
|
+ v-model.trim="searchForm.name"
|
|
|
+ clearable
|
|
|
+ @keyup.enter.native="search"
|
|
|
+ placeholder="学生编号/姓名/手机号"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="isAllowAdjust">
|
|
|
+ <el-select
|
|
|
+ v-model.trim="searchForm.isAllowAdjust"
|
|
|
+ clearable
|
|
|
+ placeholder="是否允许调剂"
|
|
|
+ >
|
|
|
+ <el-option label="是" :value="1"></el-option>
|
|
|
+ <el-option label="否" :value="0"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select clearable v-model="searchForm.subjectId" placeholder="所选专业">
|
|
|
+ <el-option v-for="item in selects.subjects" :value="item.id" :label="item.name" :key="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="danger" native-type="seach">搜索</el-button>
|
|
|
+ <el-button native-type="reset" type="primary">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </save-form>
|
|
|
+ <div class="tableWrap">
|
|
|
+ <el-table
|
|
|
+ style="width: 100%"
|
|
|
+ :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
|
|
|
+ :data="tableList"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="userId"
|
|
|
+ label="学员编号"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <copy-text>{{ scope.row.userId }}</copy-text>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="userName"
|
|
|
+ label="学员姓名"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="gender"
|
|
|
+ label="性别"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.gender ? '男' : '女' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="phone"
|
|
|
+ label="联系电话"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <copy-text>{{ scope.row.phone }}</copy-text>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ label="年级班级"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.currentGrade }}{{ scope.row.currentClass }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="subjectFirstName"
|
|
|
+ label="选报声部1"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="subjectSecondName"
|
|
|
+ label="选报声部2"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="isAllowAdjust"
|
|
|
+ label="是否服从调剂"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.isAllowAdjust ? '是' : '否' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="realName"
|
|
|
+ label="乐器准备方式"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.kitPurchaseMethod == 1 ? '参与团购' : '自行准备' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="courseScheduleId"
|
|
|
+ width="150"
|
|
|
+ label="操作"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <auth :auths="['visit/add']" :router="['/business/forecastName']">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="addVisited(scope.row)"
|
|
|
+ >新增回访</el-button>
|
|
|
+ </auth>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ sync
|
|
|
+ :total.sync="pageInfo.total"
|
|
|
+ :page.sync="pageInfo.page"
|
|
|
+ :limit.sync="pageInfo.limit"
|
|
|
+ :page-sizes="pageInfo.page_size"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 预报名连接 -->
|
|
|
+ <qr-code v-model="codeStatus" title="预报名二维码" :codeUrl="codeUrl" />
|
|
|
+ <!-- 预报名时间延长 -->
|
|
|
+ <!-- <el-dialog
|
|
|
+ title="预报名时间延长"
|
|
|
+ :visible.sync="extendPaymentStatus"
|
|
|
+ destroy-on-close
|
|
|
+ width="400px"
|
|
|
+ >
|
|
|
+ <el-form label-width="120px" :model="extendForm" ref="extendForm" :rules="extendRule">
|
|
|
+ <el-form-item label="延长预报名时间" prop="expireDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model.trim="extendForm.expireDate"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="date"
|
|
|
+ :picker-options="applyDates"
|
|
|
+ placeholder="选择日期"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="extendPaymentStatus = false">取 消</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="onExtendPayment('extendForm')"
|
|
|
+ >确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog> -->
|
|
|
+ <!-- 回访记录 -->
|
|
|
+ <el-dialog
|
|
|
+ title="新增回访"
|
|
|
+ width="600px"
|
|
|
+ destroy-on-close
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :visible.sync="visitVisible"
|
|
|
+ >
|
|
|
+ <visit-model v-if="visitVisible" @close="visitVisible = false" :visitDetail="visitDetail" />
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import pagination from "@/components/Pagination/index";
|
|
|
+import qrCode from '@/components/QrCode/index';
|
|
|
+import { permission } from "@/utils/directivePage";
|
|
|
+import { vaildStudentUrl } from '@/utils/validate'
|
|
|
+import visitModel from './modals/visit'
|
|
|
+import { queryPreApplyList, finishPreApply } from './api'
|
|
|
+export default {
|
|
|
+ name: 'forecastName',
|
|
|
+ components: { pagination, qrCode, visitModel },
|
|
|
+ data() {
|
|
|
+ const query = this.$route.query
|
|
|
+ return {
|
|
|
+ teamName: query.name || null,
|
|
|
+ codeStatus: false,
|
|
|
+ musicGroupId: query.id,
|
|
|
+ codeUrl: vaildStudentUrl() + '/project/forecastName/index.html?musicGroupId=' + query.id,
|
|
|
+ searchForm: {
|
|
|
+ name: null,
|
|
|
+ subjectId: null,
|
|
|
+ isAllowAdjust: null,
|
|
|
+ },
|
|
|
+ tableList: [],
|
|
|
+ pageInfo: {
|
|
|
+ // 分页规则
|
|
|
+ limit: 10, // 限制显示条数
|
|
|
+ page: 1, // 当前页
|
|
|
+ total: 0, // 总条数
|
|
|
+ page_size: [10, 20, 40, 50], // 选择限制显示条数
|
|
|
+ },
|
|
|
+ visitVisible: false,
|
|
|
+ visitDetail: null,
|
|
|
+ extendPaymentStatus: false,
|
|
|
+ extendForm: {
|
|
|
+ expireDate: null,
|
|
|
+ },
|
|
|
+ extendRule: {
|
|
|
+ expireDate: [
|
|
|
+ { required: true, message: "请选择延长时间", trigger: "change" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.$store.dispatch('setSubjects')
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ permission,
|
|
|
+ onReSet() {
|
|
|
+ this.$refs['searchForm'].resetFields()
|
|
|
+ this.search()
|
|
|
+ },
|
|
|
+ search() {
|
|
|
+ this.pageInfo.page = 1
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ onCancel() {
|
|
|
+ this.$router.push({ path: "/business/teamDetail" });
|
|
|
+ },
|
|
|
+ async getList() {
|
|
|
+ try {
|
|
|
+ const result = await queryPreApplyList({
|
|
|
+ ...this.searchForm,
|
|
|
+ page: this.pageInfo.page,
|
|
|
+ rows: this.pageInfo.limit
|
|
|
+ })
|
|
|
+ this.tableList = result.data.rows
|
|
|
+ this.pageInfo.total = result.data.total
|
|
|
+ } catch (error) {}
|
|
|
+ },
|
|
|
+ async onPaymentGroup(type) {
|
|
|
+ try {
|
|
|
+ const result = await finishPreApply({
|
|
|
+ isCheckStudentNum: type == 1 ? false : true,
|
|
|
+ musicGroupId: this.musicGroupId
|
|
|
+ })
|
|
|
+ this.$router.push({
|
|
|
+ path: '/business/teamDetail'
|
|
|
+ })
|
|
|
+ } catch(error) {}
|
|
|
+ },
|
|
|
+ addVisited(rows) {
|
|
|
+ // 新增回访
|
|
|
+ this.visitVisible = true
|
|
|
+ this.visitDetail = {
|
|
|
+ musicGroupId: rows.musicGroupId,
|
|
|
+ overview: "",
|
|
|
+ purpose: "",
|
|
|
+ studentId: rows.userId,
|
|
|
+ type: "",
|
|
|
+ visitTime: "",
|
|
|
+ visitType: "",
|
|
|
+ feedback: "",
|
|
|
+ studentName: rows.userName,
|
|
|
+ }
|
|
|
+ // this.visitDetail = rows
|
|
|
+ },
|
|
|
+ onExtendPayment(formName) {
|
|
|
+ this.$refs[formName].validate(valid => {
|
|
|
+ if(valid) {
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ applyDates() {
|
|
|
+ let self = this;
|
|
|
+ return {
|
|
|
+ firstDayOfWeek: 1,
|
|
|
+ disabledDate(time) {
|
|
|
+ if (self.paymentExpireDate) {
|
|
|
+ return (
|
|
|
+ time.getTime() >
|
|
|
+ new Date(self.paymentExpireDate.replace(/-/g, "/")).getTime()
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+
|
|
|
+</style>
|