licailing 4 years ago
parent
commit
56e3fb55b2

+ 5 - 0
src/main/java/com/izouma/wenlvju/repo/PerformanceApplyRepo.java

@@ -16,6 +16,11 @@ public interface PerformanceApplyRepo extends JpaRepository<PerformanceApply, Lo
     @Transactional
     void softDelete(Long id);
 
+    @Query("update PerformanceApply t set t.del = true where t.performanceId = ?1")
+    @Modifying
+    @Transactional
+    void softDeleteByPerformanceId(Long performanceId);
+
     List<PerformanceApply> findAllByStatusAndPerformanceId(ApplyStatus status, Long performanceId);
 
 //    List<PerformanceApply> findAllByShowTimeIsNotNullAndPerformanceId(Long performanceId);

+ 2 - 0
src/main/java/com/izouma/wenlvju/security/WebSecurityConfig.java

@@ -70,6 +70,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/rate/test").permitAll()
                 .antMatchers("/district/NJ").permitAll()
                 .antMatchers("/setting/byFlag").permitAll()
+                .antMatchers("/performanceApply/get/**").permitAll()
+                .antMatchers("/person/byPerApplyId").permitAll()
                 .antMatchers("/upload/**").permitAll()
                 .antMatchers("/files/**").permitAll()
                 .antMatchers("/static/**").permitAll()

+ 2 - 2
src/main/java/com/izouma/wenlvju/service/PerformanceApplyService.java

@@ -238,8 +238,8 @@ public class PerformanceApplyService {
                 .average()
                 .orElse(0.0);
 
-//        double scores1 = (double) Math.round(scores * 1000) / 1000;
-        apply.setScore(scores);
+        double scores1 = (double) Math.round(scores * 10) / 10;
+        apply.setScore(scores1);
         performanceApplyRepo.save(apply);
     }
 }

+ 3 - 0
src/main/java/com/izouma/wenlvju/web/PerformanceApplyController.java

@@ -91,11 +91,14 @@ public class PerformanceApplyController extends BaseController {
         performanceApplyService.score(id, score, SecurityUtils.getAuthenticatedUser().getId());
     }
 
+    @ApiOperation("签到")
     @PostMapping("/signIn")
     public PerformanceApply signIn(@RequestParam Long id) {
         return performanceApplyService.signIn(id, SecurityUtils.getAuthenticatedUser().getId());
     }
 
+    @ApiOperation("获取手机号/token")
+    @PostMapping("/getAuth")
     public Map<String, String> getAuth(Long id, String phone) {
         return performanceApplyService.getAuth(id, phone);
     }

+ 6 - 2
src/main/java/com/izouma/wenlvju/web/PerformanceController.java

@@ -1,5 +1,7 @@
 package com.izouma.wenlvju.web;
+
 import com.izouma.wenlvju.domain.Performance;
+import com.izouma.wenlvju.repo.PerformanceApplyRepo;
 import com.izouma.wenlvju.service.PerformanceService;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
@@ -19,8 +21,9 @@ import java.util.List;
 @RequestMapping("/performance")
 @AllArgsConstructor
 public class PerformanceController extends BaseController {
-    private PerformanceService performanceService;
-    private PerformanceRepo performanceRepo;
+    private final PerformanceService   performanceService;
+    private final PerformanceRepo      performanceRepo;
+    private final PerformanceApplyRepo performanceApplyRepo;
 
     @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -49,6 +52,7 @@ public class PerformanceController extends BaseController {
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
         performanceRepo.softDelete(id);
+        performanceApplyRepo.softDeleteByPerformanceId(id);
     }
 
     @GetMapping("/excel")

+ 7 - 1
src/main/java/com/izouma/wenlvju/web/PersonController.java

@@ -1,4 +1,5 @@
 package com.izouma.wenlvju.web;
+
 import com.izouma.wenlvju.domain.Person;
 import com.izouma.wenlvju.service.PersonService;
 import com.izouma.wenlvju.dto.PageQuery;
@@ -20,7 +21,7 @@ import java.util.List;
 @AllArgsConstructor
 public class PersonController extends BaseController {
     private PersonService personService;
-    private PersonRepo personRepo;
+    private PersonRepo    personRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -56,5 +57,10 @@ public class PersonController extends BaseController {
         List<Person> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
+
+    @PostMapping("/byPerApplyId")
+    public List<Person> byPerApplyId(@RequestParam Long perApplyId) {
+        return personRepo.findAllByPerformanceApplyId(perApplyId);
+    }
 }
 

+ 2 - 2
src/main/vue/src/views/ExamRoomList.vue

@@ -4,14 +4,14 @@
             <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
             <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button>
             <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">添加 </el-button>
-            <el-button
+            <!-- <el-button
                 @click="download"
                 type="primary"
                 icon="el-icon-download"
                 :loading="downloading"
                 class="filter-item"
                 >导出EXCEL
-            </el-button>
+            </el-button> -->
         </div>
         <el-table
             :data="tableData"

+ 18 - 6
src/main/vue/src/views/PerformanceApplyEdit.vue

@@ -13,7 +13,7 @@
                 <el-input v-model="formData.agency"></el-input>
             </el-form-item> -->
             <el-form-item prop="composition" label="作品名称">
-                <el-input v-model="formData.composition"></el-input>
+                <el-input v-model="formData.composition" :readonly="!organization"></el-input>
             </el-form-item>
             <el-form-item prop="artTypeId" label="专业">
                 <el-cascader
@@ -24,17 +24,18 @@
                     :options="artTypes"
                     :show-all-levels="false"
                     placeholder="请选择专业"
+                    :disabled="!organization"
                 >
                 </el-cascader>
             </el-form-item>
             <el-form-item prop="teacher" label="指导老师">
-                <el-input v-model="formData.teacher"></el-input>
+                <el-input v-model="formData.teacher" :readonly="!organization"></el-input>
             </el-form-item>
             <el-form-item prop="contact" label="联系人">
-                <el-input v-model="formData.contact"></el-input>
+                <el-input v-model="formData.contact" :readonly="!organization"></el-input>
             </el-form-item>
             <el-form-item prop="phone" label="联系电话">
-                <el-input v-model="formData.phone"></el-input>
+                <el-input v-model="formData.phone" :readonly="!organization"></el-input>
             </el-form-item>
             <!-- <el-form-item prop="status" label="状态">
                 <el-select v-model="formData.status" clearable filterable placeholder="请选择">
@@ -91,7 +92,13 @@ export default {
         return {
             saving: false,
             formData: {},
-            rules: {},
+            rules: {
+                phone: {
+                    pattern: /^1[3-9]\d{9}$/,
+                    message: '请输入正确的手机号',
+                    trigger: 'blur'
+                }
+            },
             statusOptions: [
                 { label: '审核中', value: 'PENDING' },
                 { label: '通过', value: 'PASS' },
@@ -167,4 +174,9 @@ export default {
     }
 };
 </script>
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+/deep/ .el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+    color: #606266;
+}
+</style>

+ 9 - 5
src/main/vue/src/views/PerformanceApplyList.vue

@@ -34,18 +34,22 @@
             <el-table-column prop="contact" label="联系人"> </el-table-column>
             <el-table-column prop="phone" label="联系电话"> </el-table-column>
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
-            <el-table-column prop="showTime" label="表演时间" min-width="140"
+            <el-table-column prop="showTime" label="表演时间" min-width="140" show-overflow-tooltip
                 ><template slot-scope="{ row }">
                     <span v-if="row.showStartTime">{{ row.showStartTime }} 至 {{ row.showEndTime }}</span>
                     <span v-else>暂无</span>
                 </template></el-table-column
             >
-            <el-table-column label="操作" align="center" fixed="right" min-width="220">
+            <el-table-column label="操作" align="left" fixed="right" min-width="220">
                 <template slot-scope="{ row }">
-                    <!-- <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
+                    <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                     <el-button @click="showDialog(row)" type="primary" size="mini" plain>参演人员维护</el-button>
-                    <el-button @click="dialogCode = true" type="primary" size="mini" plain>二维码</el-button>
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain v-if="row.status != 'PASS'">
+                        编辑
+                    </el-button>
+                    <el-button @click="dialogCode = true" type="primary" size="mini" plain v-if="row.status == 'PASS'">
+                        二维码
+                    </el-button>
                 </template>
             </el-table-column>
         </el-table>

+ 5 - 2
src/main/vue/src/views/PerformanceApplyList2.vue

@@ -43,7 +43,10 @@
             <el-table-column prop="phone" label="联系电话"> </el-table-column>
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
             <el-table-column label="表演时间" min-width="140">
-                <template slot-scope="{ row }"> {{ row.showStartTime }} 至 {{ row.showEndTime }} </template>
+                <template slot-scope="{ row }">
+                    <span v-if="row.showStartTime">{{ row.showStartTime }} 至 {{ row.showEndTime }}</span>
+                    <span v-else>暂无</span>
+                </template>
             </el-table-column>
             <el-table-column prop="awards" label="奖项">
                 <template slot-scope="{ row }">
@@ -79,7 +82,7 @@
                     >
                         拒绝
                     </el-button>
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                     <!-- <el-button @click="showDialog(row)" type="primary" size="mini" plain>参演人员维护</el-button>
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>二维码</el-button> -->

+ 25 - 39
src/main/vue/src/views/PerformanceEdit.vue

@@ -10,7 +10,7 @@
             style="max-width: 570px;"
         >
             <el-form-item prop="name" label="名称">
-                <el-input v-model="formData.name"></el-input>
+                <el-input v-model="formData.name" :readonly="!display"></el-input>
             </el-form-item>
             <el-form-item label="报名时间">
                 <el-date-picker
@@ -21,54 +21,22 @@
                     end-placeholder="请选择结束时间"
                     range-separator="至"
                     style="width: 100%"
+                    :readonly="!display"
                 >
                 </el-date-picker>
             </el-form-item>
             <el-form-item label="活动时间">
-                <!-- <el-date-picker
-                    v-model="eventDateRange"
-                    type="daterange"
-                    value-format="yyyy-MM-dd"
-                    start-placeholder="请选择开始时间"
-                    end-placeholder="请选择结束时间"
-                    range-separator="至"
-                    style="width: 100%"
-                >
-                </el-date-picker> -->
                 <el-date-picker
                     v-model="formData.eventStartDate"
                     type="date"
                     value-format="yyyy-MM-dd"
                     placeholder="选择日期"
                     style="width: 100%"
+                    :readonly="!display"
                 >
                 </el-date-picker>
             </el-form-item>
             <el-form-item label="上午">
-                <!-- <el-time-select
-                    placeholder="起始时间"
-                    v-model="formData.morningStartTime"
-                    :picker-options="{
-                        start: '08:30',
-                        step: '00:15',
-                        end: '18:00'
-                    }"
-                    format="HH:mm:ss"
-                >
-                </el-time-select>
-                <span style="margin: 0 12px">至</span>
-                <el-time-select
-                    placeholder="结束时间"
-                    v-model="formData.morningEndTime"
-                    :picker-options="{
-                        start: '08:30',
-                        step: '00:15',
-                        end: '18:00',
-                        minTime: formData.morningStartTime
-                    }"
-                    format="HH:mm:ss"
-                >
-                </el-time-select> -->
                 <el-time-picker
                     is-range
                     v-model="eventTimeRange"
@@ -78,6 +46,7 @@
                     placeholder="选择时间范围"
                     style="width: 100%"
                     value-format="HH:mm:ss"
+                    :readonly="!display"
                 >
                 </el-time-picker>
             </el-form-item>
@@ -89,11 +58,12 @@
                     }"
                     placeholder="任意时间点"
                     value-format="HH:mm:ss"
+                    :readonly="!display"
                 >
                 </el-time-picker>
             </el-form-item>
             <el-form-item prop="address" label="活动地点">
-                <el-input type="textarea" :rows="3" v-model="formData.address"></el-input>
+                <el-input type="textarea" :rows="3" v-model="formData.address" :readonly="!display"></el-input>
             </el-form-item>
             <!-- <el-form-item prop="status" label="状态">
                 <el-radio-group v-model="formData.status">
@@ -103,14 +73,17 @@
                 </el-radio-group>
             </el-form-item> -->
             <el-form-item>
-                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
-                <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
+                <el-button @click="onSave" :loading="saving" type="primary" v-if="display">保存</el-button>
+                <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id && display">
+                    删除
+                </el-button>
                 <el-button @click="$router.go(-1)">取消</el-button>
             </el-form-item>
         </el-form>
     </div>
 </template>
 <script>
+import { mapState } from 'vuex';
 export default {
     name: 'PerformanceEdit',
     created() {
@@ -127,6 +100,7 @@ export default {
                     this.$message.error(e.error);
                 });
         }
+        this.getAdmin();
     },
     data() {
         return {
@@ -138,9 +112,13 @@ export default {
                 { label: '已结束', value: 'END' }
             ],
             dateRange: [],
-            eventTimeRange: ''
+            eventTimeRange: '',
+            display: false
         };
     },
+    computed: {
+        ...mapState(['userInfo'])
+    },
     methods: {
         onSave() {
             this.$refs.form.validate(valid => {
@@ -186,6 +164,14 @@ export default {
                         this.$message.error((e || {}).error || '删除失败');
                     }
                 });
+        },
+        getAdmin() {
+            let data = this.userInfo.authorities;
+            data.forEach(element => {
+                if (element.name === 'ROLE_ADMIN') {
+                    this.display = true;
+                }
+            });
         }
     }
 };

+ 32 - 7
src/main/vue/src/views/PerformanceList.vue

@@ -35,22 +35,47 @@
             <el-table-column prop="address" label="地点"> </el-table-column>
             <el-table-column prop="status" label="状态" width="80">
                 <template slot-scope="{ row }">
-                    <el-link style="font-size: 13px" :underline="false" type="info" v-if="currentTime > row.endDate"
+                    <el-link style="font-size: 13px" :underline="false" type="info" v-if="currentTime < row.startDate"
+                        >未开始</el-link
+                    >
+                    <el-link
+                        style="font-size: 13px"
+                        :underline="false"
+                        type="info"
+                        v-else-if="currentTime > row.endDate"
                         >已结束</el-link
                     >
-                    <el-link style="font-size: 13px" :underline="false" type="success" v-if="currentTime < row.endDate"
+                    <el-link
+                        style="font-size: 13px"
+                        :underline="false"
+                        type="success"
+                        v-else-if="currentTime < row.endDate"
                         >报名中</el-link
                     >
                 </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="130">
+            <el-table-column label="操作" align="right" fixed="right" min-width="130">
                 <template slot-scope="{ row }">
-                    <el-button @click="handleCommand(row)" type="success" size="mini" plain v-if="!display"
-                        ><span v-if="currentTime < row.endDate">报名入口</span> <span v-else>查看节目</span></el-button
+                    <el-button
+                        @click="handleCommand(row)"
+                        type="success"
+                        size="mini"
+                        plain
+                        v-if="!display && currentTime >= row.startDate"
                     >
-                    <el-button @click="handleCommand1(row)" type="success" size="mini" plain v-else
-                        ><span v-if="currentTime < row.endDate">报名入口</span> <span v-else>查看节目</span></el-button
+                        <span v-if="currentTime < row.endDate">报名入口</span>
+                        <span v-else>查看节目</span>
+                    </el-button>
+                    <el-button
+                        @click="handleCommand1(row)"
+                        type="success"
+                        size="mini"
+                        plain
+                        v-if="display && currentTime >= row.startDate"
                     >
+                        <span v-if="currentTime > row.startDate && currentTime < row.endDate">报名入口</span>
+                        <span v-else>查看节目</span>
+                    </el-button>
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>

+ 1 - 56
src/main/vue/src/views/record/RecordOrganizationList.vue

@@ -39,8 +39,6 @@
             <el-table-column label="操作" align="center" fixed="right" min-width="140">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
-                    <!-- <el-button @click="openRoom(row)" type="warning" size="mini" plain>考场</el-button> -->
-                    <!-- <el-button @click="openDialog(row)" type="success" size="mini" plain>添加考场</el-button> -->
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
@@ -66,20 +64,6 @@
             >
             </el-pagination>
         </div>
-        <el-dialog title="添加考场" :visible.sync="dialogVisible" width="600px" center>
-            <el-select
-                v-model="form.addRooms"
-                clearable
-                multiple
-                style="width: 400px; margin-left: 80px"
-                placeholder="请选择考场"
-            >
-                <el-option v-for="item in rooms" :key="item.value" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <div style="margin: 20px 0 0 422px">
-                <el-button type="primary" @click="saveRoom">确认</el-button>
-            </div>
-        </el-dialog>
     </div>
 </template>
 <script>
@@ -99,22 +83,6 @@ export default {
                 console.log(e);
                 this.$message.error(e.error);
             });
-        this.$http
-            .post('/examRoom/all', { size: 100, query: { organizationId: this.organization.id } }, { body: 'json' })
-            .then(res => {
-                if (res.content.length > 0) {
-                    res.content.forEach(item => {
-                        this.rooms.push({
-                            label: item.name,
-                            value: item.id
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
     },
     data() {
         return {
@@ -133,12 +101,7 @@ export default {
             agency: '',
             organizer: '',
             dateRange: '',
-            rooms: [],
-            dialogVisible: false,
-            form: {
-                id: '',
-                addRooms: []
-            }
+            dialogVisible: false
         };
     },
     computed: {
@@ -194,14 +157,6 @@ export default {
                 }
             });
         },
-        openRoom(row) {
-            this.$router.push({
-                path: '/recordRoomList',
-                query: {
-                    id: row.id
-                }
-            });
-        },
         download() {
             this.downloading = true;
             this.$axios
@@ -270,16 +225,6 @@ export default {
                     console.log(e);
                     this.$message.error(e.error);
                 });
-        },
-        openDialog(row) {
-            this.dialogVisible = true;
-            this.form.id = row.id;
-        },
-        saveRoom() {
-            console.log(this.form);
-            this.dialogVisible = false;
-            // this.form.id = '';
-            // this.form.addRooms = [];
         }
     }
 };