licailing 4 lat temu
rodzic
commit
b8fc014a39

+ 20 - 0
src/main/java/com/izouma/wenlvju/enums/ProgrammeStatus.java

@@ -0,0 +1,20 @@
+package com.izouma.wenlvju.enums;
+
+public enum ProgrammeStatus {
+    /*
+    初始状态
+     */
+    INITIAL,
+    /*
+    已提交
+     */
+    SUBMIT,
+    /*
+    考级机构审核未通过
+     */
+    AUDIT_FAILED,
+    /*
+    审核中
+     */
+    UNDER_REVIEW
+}

+ 15 - 0
src/main/java/com/izouma/wenlvju/service/performance/ArrangeJudgeService.java

@@ -68,4 +68,19 @@ public class ArrangeJudgeService {
         if (CollUtil.isEmpty(arrangeIds))
         if (CollUtil.isEmpty(arrangeIds))
         arrangeJudgeRepo.cancelJudge(arrangeIds);
         arrangeJudgeRepo.cancelJudge(arrangeIds);
     }
     }
+
+    public void assignJudgeOnline(String experts, String arranges){
+        LongArrayConverter converter = new LongArrayConverter();
+        List<Long> expertIds = converter.convertToEntityAttribute(experts);
+        List<Long> arrangeIds = converter.convertToEntityAttribute(arranges);
+        List<ArrangeJudge> save = new ArrayList<>();
+        arrangeIds.forEach(arrangeId ->
+                expertIds.forEach(expertId ->
+                        save.add(ArrangeJudge.builder()
+                                .arrangeId(arrangeId)
+                                .expertId(expertId)
+                                .build())));
+
+        arrangeJudgeRepo.saveAll(save);
+    }
 }
 }

+ 5 - 1
src/main/java/com/izouma/wenlvju/service/performance/ArrangeService.java

@@ -290,7 +290,11 @@ public class ArrangeService {
         }), JpaUtils.toPageRequest(pageQuery));
         }), JpaUtils.toPageRequest(pageQuery));
     }
     }
 
 
-    public void groupOffline(ArrangeDTO dto) {
+    /*
+    展演形式为线上进行分组
+    不需要时间、上下午、地点
+     */
+    public void groupOnline(ArrangeDTO dto) {
         Arrange first = arrangeRepo.findFirstByPerformanceId(dto.getPerformanceId());
         Arrange first = arrangeRepo.findFirstByPerformanceId(dto.getPerformanceId());
         if (ObjectUtil.isNotNull(first) && first.isPublish()) {
         if (ObjectUtil.isNotNull(first) && first.isPublish()) {
             throw new BusinessException("活动分组已发布");
             throw new BusinessException("活动分组已发布");

+ 15 - 4
src/main/java/com/izouma/wenlvju/web/UserController.java

@@ -106,13 +106,13 @@ public class UserController extends BaseController {
     @PostMapping("/all2")
     @PostMapping("/all2")
     public Page<User> all2(@RequestBody PageQuery pageQuery) {
     public Page<User> all2(@RequestBody PageQuery pageQuery) {
         List<Authority> authorities = new ArrayList<>();
         List<Authority> authorities = new ArrayList<>();
-        authorities.add(Authority.get(AuthorityName.ROLE_DISTRICT));
+//        authorities.add(Authority.get(AuthorityName.ROLE_DISTRICT));
         authorities.add(Authority.get(AuthorityName.ROLE_ORGANIZER));
         authorities.add(Authority.get(AuthorityName.ROLE_ORGANIZER));
-        authorities.add(Authority.get(AuthorityName.ROLE_ADMIN));
-        authorities.add(Authority.get(AuthorityName.ROLE_DEV));
+//        authorities.add(Authority.get(AuthorityName.ROLE_ADMIN));
+//        authorities.add(Authority.get(AuthorityName.ROLE_DEV));
         authorities.add(Authority.get(AuthorityName.ROLE_SUPERVISOR));
         authorities.add(Authority.get(AuthorityName.ROLE_SUPERVISOR));
         authorities.add(Authority.get(AuthorityName.ROLE_USER));
         authorities.add(Authority.get(AuthorityName.ROLE_USER));
-        authorities.add(Authority.get(AuthorityName.ROLE_DISTRICT_STAFF));
+//        authorities.add(Authority.get(AuthorityName.ROLE_DISTRICT_STAFF));
         return userService.byAuthority(pageQuery, authorities);
         return userService.byAuthority(pageQuery, authorities);
     }
     }
 
 
@@ -121,6 +121,17 @@ public class UserController extends BaseController {
         return userService.toArtType(pageQuery, Collections.singletonList(Authority.get(AuthorityName.ROLE_EXPERT)));
         return userService.toArtType(pageQuery, Collections.singletonList(Authority.get(AuthorityName.ROLE_EXPERT)));
     }
     }
 
 
+    @ApiOperation("工作人员")
+    @PostMapping("/staff")
+    public Page<User> staff(@RequestBody PageQuery pageQuery) {
+        List<Authority> authorities = new ArrayList<>();
+        authorities.add(Authority.get(AuthorityName.ROLE_DISTRICT_STAFF));
+        authorities.add(Authority.get(AuthorityName.ROLE_DISTRICT));
+        authorities.add(Authority.get(AuthorityName.ROLE_ADMIN));
+        return userService.byAuthority(pageQuery, authorities);
+    }
+
+    @ApiOperation("分配专家组时的选择")
     @PostMapping("/expert")
     @PostMapping("/expert")
     public Page<ExpertDTO> expert(@RequestBody PageQuery pageQuery) {
     public Page<ExpertDTO> expert(@RequestBody PageQuery pageQuery) {
         List<Authority> authorities = new ArrayList<>();
         List<Authority> authorities = new ArrayList<>();

+ 8 - 0
src/main/java/com/izouma/wenlvju/web/performance/ArrangeController.java

@@ -68,11 +68,19 @@ public class ArrangeController extends BaseController {
         ExcelUtils.export(response, data);
         ExcelUtils.export(response, data);
     }
     }
 
 
+    @ApiOperation("线下分组")
     @PostMapping("/group")
     @PostMapping("/group")
     public void group(@RequestBody ArrangeDTO record) {
     public void group(@RequestBody ArrangeDTO record) {
         arrangeService.group(record);
         arrangeService.group(record);
     }
     }
 
 
+    @ApiOperation("线上分组")
+    @PostMapping("/groupOnline")
+    public void groupOnline(@RequestBody ArrangeDTO record) {
+        arrangeService.groupOnline(record);
+    }
+
+
     @ApiOperation("发布")
     @ApiOperation("发布")
     @PostMapping("/performanceId")
     @PostMapping("/performanceId")
     public void publish(@RequestParam Long performanceId) {
     public void publish(@RequestParam Long performanceId) {

+ 2 - 2
src/main/vue/src/plugins/http.js

@@ -5,8 +5,8 @@ import qs from 'qs';
 let baseUrl = 'http://localhost:8080';
 let baseUrl = 'http://localhost:8080';
 switch (process.env.NODE_ENV) {
 switch (process.env.NODE_ENV) {
     case 'development':
     case 'development':
-        // baseUrl = 'http://localhost:8080';
-        baseUrl = 'http://wljtest.izouma.com';
+        baseUrl = 'http://localhost:8080';
+        // baseUrl = 'http://wljtest.izouma.com';
         // baseUrl = 'http://192.168.50.190:8080';
         // baseUrl = 'http://192.168.50.190:8080';
         break;
         break;
     case 'test':
     case 'test':

+ 14 - 5
src/main/vue/src/router.js

@@ -88,6 +88,14 @@ const router = new Router({
                         title: '用户管理'
                         title: '用户管理'
                     }
                     }
                 },
                 },
+                {
+                    path: '/staffList',
+                    name: 'StaffList',
+                    component: () => import(/* webpackChunkName: "staffList" */ '@/views/user/StaffList.vue'),
+                    meta: {
+                        title: '用户管理'
+                    }
+                },
                 {
                 {
                     path: '/echarts',
                     path: '/echarts',
                     name: 'echarts',
                     name: 'echarts',
@@ -99,7 +107,7 @@ const router = new Router({
                 {
                 {
                     path: '/video',
                     path: '/video',
                     name: 'video',
                     name: 'video',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/Video.vue'),
+                    component: () => import(/* webpackChunkName: "video" */ '@/views/Video.vue'),
                     meta: {
                     meta: {
                         title: '监控平台'
                         title: '监控平台'
                     }
                     }
@@ -107,7 +115,7 @@ const router = new Router({
                 {
                 {
                     path: '/assignExpert',
                     path: '/assignExpert',
                     name: 'assignExpert',
                     name: 'assignExpert',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/rate/AssignExpert.vue'),
+                    component: () => import(/* webpackChunkName: "assignExpert" */ '@/views/rate/AssignExpert.vue'),
                     meta: {
                     meta: {
                         title: '分配专家组'
                         title: '分配专家组'
                     }
                     }
@@ -126,7 +134,7 @@ const router = new Router({
                 {
                 {
                     path: '/gradeList',
                     path: '/gradeList',
                     name: 'gradeList',
                     name: 'gradeList',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/rate/GradeList.vue'),
+                    component: () => import(/* webpackChunkName: "gradeList" */ '@/views/rate/GradeList.vue'),
                     meta: {
                     meta: {
                         title: '评分'
                         title: '评分'
                     }
                     }
@@ -134,7 +142,8 @@ const router = new Router({
                 {
                 {
                     path: '/organization',
                     path: '/organization',
                     name: 'organization',
                     name: 'organization',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/organization/Organization.vue'),
+                    component: () =>
+                        import(/* webpackChunkName: "organization" */ '@/views/organization/Organization.vue'),
                     meta: {
                     meta: {
                         title: '等级评定'
                         title: '等级评定'
                     }
                     }
@@ -143,7 +152,7 @@ const router = new Router({
                     path: '/organization1',
                     path: '/organization1',
                     name: 'organization1',
                     name: 'organization1',
                     component: () =>
                     component: () =>
-                        import(/* webpackChunkName: "userList" */ '@/views/organization/Organization1.vue'),
+                        import(/* webpackChunkName: "organization1" */ '@/views/organization/Organization1.vue'),
                     meta: {
                     meta: {
                         title: '等级评定'
                         title: '等级评定'
                     }
                     }

+ 1 - 3
src/main/vue/src/views/performance/ProgrammeList.vue

@@ -445,9 +445,7 @@ export default {
         beforeGetData() {
         beforeGetData() {
             let data = {
             let data = {
                 sort: 'createdAt,desc',
                 sort: 'createdAt,desc',
-                query: {
-                    status: 1
-                }
+                query: {}
             };
             };
             if (this.form.competitionGroup) {
             if (this.form.competitionGroup) {
                 data.query.competitionGroup = this.form.competitionGroup;
                 data.query.competitionGroup = this.form.competitionGroup;

+ 193 - 0
src/main/vue/src/views/user/StaffList.vue

@@ -0,0 +1,193 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <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>
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            height="tableHeight"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+        >
+            <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
+            <el-table-column prop="id" label="ID" width="100"> </el-table-column>
+            <el-table-column prop="username" label="账号" min-width="100"> </el-table-column>
+            <el-table-column prop="nickname" label="昵称" min-width="100"> </el-table-column>
+            <el-table-column prop="phone" label="手机号" min-width="100"> </el-table-column>
+            <el-table-column prop="work" label="工作单位" min-width="100"> </el-table-column>
+            <el-table-column prop="position" label="职位" min-width="100"> </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right" min-width="150">
+                <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>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <el-pagination
+                background
+                @size-change="onSizeChange"
+                @current-change="onCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30, 40, 50]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="totalElements"
+            >
+            </el-pagination>
+        </div>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+import ClipboardJS from 'clipboard';
+const clickData = {};
+export default {
+    mixins: [pageableTable],
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/user/staff',
+            downloading: false,
+            authority: '',
+            authorities: [{ label: '管理员', value: 'ROLE_ADMIN' }]
+        };
+    },
+    computed: {
+        ...mapState(['userInfo']),
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        beforeGetData() {
+            let data = { sort: 'createdAt,desc', query: {} };
+            if (this.search) {
+                data.search = this.search;
+            }
+            console.log(this.getAdmin());
+            if (!this.getAdmin()) {
+                data.query.id = this.userInfo.id;
+            }
+            return data;
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/userEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                path: '/userEdit',
+                query: {
+                    id: row.id
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/user/excel', { responseType: 'blob' })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        clickId(row) {
+            if (row.id !== clickData.id) {
+                clickData.id = row.id;
+                clickData.c = 0;
+            }
+            clickData.c = (clickData.c || 0) + 1;
+            if (clickData.i) {
+                clearInterval(clickData.i);
+            }
+            clickData.i = setTimeout(_ => {
+                clickData.c = 0;
+            }, 200);
+            if (clickData.c === 5) {
+                this.$http
+                    .get(`/user/getToken/${row.id}`)
+                    .then(res => {
+                        let el = document.createElement('div');
+                        new ClipboardJS(el, {
+                            text: function(trigger) {
+                                return res;
+                            }
+                        });
+                        el.click();
+                        this.$message.success('已复制Token');
+                        clickData.c = 0;
+                    })
+                    .catch(e => {
+                        this.$message.error(e.error);
+                    });
+            }
+        },
+        getAdmin() {
+            let data = this.userInfo.authorities;
+            let flag = false;
+            data.forEach(element => {
+                if (element.name === 'ROLE_ADMIN') {
+                    flag = true;
+                }
+            });
+            return flag;
+        },
+        deleteRow(row) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/user/del/${row.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>