licailing 4 лет назад
Родитель
Сommit
7140e289ef

+ 21 - 0
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -32,6 +32,7 @@ import org.apache.poi.util.TempFile;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Predicate;
@@ -70,6 +71,26 @@ public class ProgrammeService {
         return programmeRepo.findAll(JpaUtils.toSpecification(pageQuery, Programme.class), JpaUtils.toPageRequest(pageQuery));
         return programmeRepo.findAll(JpaUtils.toSpecification(pageQuery, Programme.class), JpaUtils.toPageRequest(pageQuery));
     }
     }
 
 
+    public ProgrammeDTO getByAdmin(@PathVariable Long id) {
+        Programme programme = programmeRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        String performance = performanceRepo.findById(programme.getPerformanceId())
+                .orElseThrow(new BusinessException("无活动"))
+                .getName();
+        String organization = organizationRepo.findById(programme.getOrganizationId())
+                .orElseThrow(new BusinessException("无承办单位"))
+                .getName();
+        String gradeOrganization = gradingOrganizationRepo.findById(programme.getGradingOrganizationId())
+                .orElseThrow(new BusinessException("无考级机构"))
+                .getName();
+        String specialty = artTypeRepo.findById(programme.getSpecialtyId())
+                .orElseThrow(new BusinessException("无专业"))
+                .getName();
+        String setting = settingRepo.findById(programme.getLevelSettingId())
+                .orElseThrow(new BusinessException("无分组"))
+                .getName();
+        return this.toDTO(programme, performance, organization, gradeOrganization, specialty, setting);
+    }
+
     public Programme save(Programme record, Long userId) {
     public Programme save(Programme record, Long userId) {
         if (record.getId() != null) {
         if (record.getId() != null) {
             Programme orig = programmeRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             Programme orig = programmeRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));

+ 5 - 0
src/main/java/com/izouma/wenlvju/web/performance/ProgrammeController.java

@@ -65,6 +65,11 @@ public class ProgrammeController extends BaseController {
         return programmeRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         return programmeRepo.findById(id).orElseThrow(new BusinessException("无记录"));
     }
     }
 
 
+    @GetMapping("/getByAdmin/{id}")
+    public ProgrammeDTO getByAdmin(@PathVariable Long id) {
+        return programmeService.getByAdmin(id);
+    }
+
     @PostMapping("/del/{id}")
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
     public void del(@PathVariable Long id) {
         programmeRepo.softDelete(id);
         programmeRepo.softDelete(id);

+ 0 - 2
src/main/vue/src/components/ArrangeLog.vue

@@ -43,10 +43,8 @@
     </el-dialog>
     </el-dialog>
 </template>
 </template>
 <script>
 <script>
-import pageableTable from '@/mixins/pageableTable';
 export default {
 export default {
     props: ['dialogVisible'],
     props: ['dialogVisible'],
-    mixins: [pageableTable],
     data() {
     data() {
         return {
         return {
             saving: false,
             saving: false,

+ 0 - 2
src/main/vue/src/components/OrganLog.vue

@@ -61,10 +61,8 @@
     </el-dialog>
     </el-dialog>
 </template>
 </template>
 <script>
 <script>
-import pageableTable from '@/mixins/pageableTable';
 export default {
 export default {
     props: ['dialogVisible', 'tableData'],
     props: ['dialogVisible', 'tableData'],
-    mixins: [pageableTable],
     data() {
     data() {
         return {
         return {
             saving: false,
             saving: false,

+ 10 - 164
src/main/vue/src/components/ProgrammeLog.vue

@@ -24,17 +24,7 @@
                                 <el-input v-model="formData.name" class="width" readonly></el-input>
                                 <el-input v-model="formData.name" class="width" readonly></el-input>
                             </el-form-item>
                             </el-form-item>
                             <el-form-item prop="specialtyId" label="参赛专业">
                             <el-form-item prop="specialtyId" label="参赛专业">
-                                <el-cascader
-                                    class="width"
-                                    ref="artCascader"
-                                    v-model="formData.specialtyId"
-                                    :props="optionProps"
-                                    :options="artTypes"
-                                    :show-all-levels="false"
-                                    placeholder="请选择专业"
-                                    disabled
-                                >
-                                </el-cascader>
+                                <el-input v-model="formData.specialty" class="width" readonly></el-input>
                             </el-form-item>
                             </el-form-item>
                             <el-form-item prop="competitionGroup" label="参赛组别">
                             <el-form-item prop="competitionGroup" label="参赛组别">
                                 <el-select
                                 <el-select
@@ -46,8 +36,8 @@
                                     disabled
                                     disabled
                                 >
                                 >
                                     <el-option
                                     <el-option
-                                        v-for="item in competitionGroupOptions"
-                                        :key="item.value"
+                                        v-for="(item, index) in competitionGroupOptions"
+                                        :key="index"
                                         :label="item.label"
                                         :label="item.label"
                                         :value="item.value"
                                         :value="item.value"
                                     >
                                     >
@@ -55,48 +45,7 @@
                                 </el-select>
                                 </el-select>
                             </el-form-item>
                             </el-form-item>
                             <el-form-item prop="levelSettingId" label="参赛级别" v-if="formData.competitionGroup">
                             <el-form-item prop="levelSettingId" label="参赛级别" v-if="formData.competitionGroup">
-                                <el-select
-                                    v-model="formData.levelSettingId"
-                                    clearable
-                                    filterable
-                                    placeholder="请选择"
-                                    class="width"
-                                    v-if="formData.competitionGroup == 'SINGLE'"
-                                    disabled
-                                >
-                                    <el-option
-                                        v-for="item in levelSingleOptions"
-                                        :key="item.value"
-                                        :label="item.label"
-                                        :value="item.value"
-                                    >
-                                        <span style="float: left">{{ item.label }}</span>
-                                        <span style="float: right; color: #8492a6; font-size: 13px">{{
-                                            item.desc
-                                        }}</span>
-                                    </el-option>
-                                </el-select>
-                                <el-select
-                                    v-model="formData.levelSettingId"
-                                    clearable
-                                    filterable
-                                    placeholder="请选择"
-                                    class="width"
-                                    v-else
-                                    disabled
-                                >
-                                    <el-option
-                                        v-for="item in levelCollectiveOptions"
-                                        :key="item.value"
-                                        :label="item.label"
-                                        :value="item.value"
-                                    >
-                                        <span style="float: left">{{ item.label }}</span>
-                                        <span style="float: right; color: #8492a6; font-size: 13px">{{
-                                            item.desc
-                                        }}</span>
-                                    </el-option>
-                                </el-select>
+                                <el-input v-model="formData.level" class="width" readonly></el-input>
                             </el-form-item>
                             </el-form-item>
                             <el-form-item
                             <el-form-item
                                 prop="durationOfWork"
                                 prop="durationOfWork"
@@ -183,40 +132,14 @@
                             <el-timeline-item placement="top" size="normal" timestamp="单位信息">
                             <el-timeline-item placement="top" size="normal" timestamp="单位信息">
                                 <el-card shadow="hover" :body-style="{ padding: '20px' }">
                                 <el-card shadow="hover" :body-style="{ padding: '20px' }">
                                     <el-form-item prop="gradingOrganizationId" label="考级机构">
                                     <el-form-item prop="gradingOrganizationId" label="考级机构">
-                                        <el-select
-                                            v-model="formData.gradingOrganizationId"
-                                            clearable
-                                            filterable
-                                            placeholder="请选择"
+                                        <el-input
+                                            v-model="formData.gradingOrganization"
                                             class="width"
                                             class="width"
-                                            disabled
-                                        >
-                                            <el-option
-                                                v-for="item in gradingOrganizationIdOptions"
-                                                :key="item.value"
-                                                :label="item.label"
-                                                :value="item.value"
-                                            >
-                                            </el-option>
-                                        </el-select>
+                                            readonly
+                                        ></el-input>
                                     </el-form-item>
                                     </el-form-item>
                                     <el-form-item prop="organizationId" label="承办单位">
                                     <el-form-item prop="organizationId" label="承办单位">
-                                        <el-select
-                                            v-model="formData.organizationId"
-                                            clearable
-                                            filterable
-                                            placeholder="请选择"
-                                            class="width"
-                                            disabled
-                                        >
-                                            <el-option
-                                                v-for="item in organizationIdOptions"
-                                                :key="item.value"
-                                                :label="item.label"
-                                                :value="item.value"
-                                            >
-                                            </el-option>
-                                        </el-select>
+                                        <el-input v-model="formData.organization" class="width" readonly></el-input>
                                     </el-form-item>
                                     </el-form-item>
                                     <el-form-item prop="examPoint" label="考级点">
                                     <el-form-item prop="examPoint" label="考级点">
                                         <el-input v-model="formData.examPoint" class="width" readonly></el-input>
                                         <el-input v-model="formData.examPoint" class="width" readonly></el-input>
@@ -351,15 +274,13 @@ export default {
                         programmeId: this.programmeId
                         programmeId: this.programmeId
                     };
                     };
                 });
                 });
-
-            // return JSON.stringify(participants);
         }
         }
     },
     },
     methods: {
     methods: {
         dataApi(id) {
         dataApi(id) {
             if (id) {
             if (id) {
                 this.$http
                 this.$http
-                    .get('programme/get/' + id)
+                    .get('programme/getByAdmin/' + id)
                     .then(res => {
                     .then(res => {
                         this.formData = res;
                         this.formData = res;
                         console.log(res);
                         console.log(res);
@@ -381,81 +302,6 @@ export default {
                     this.formData.gradingOrganizationId = this.organization.gradingOrganizationId[0];
                     this.formData.gradingOrganizationId = this.organization.gradingOrganizationId[0];
                 }
                 }
             }
             }
-            this.$http
-                .post('/setting/byFlag', { flag: 3 })
-                .then(res => {
-                    if (res.length > 0) {
-                        res.forEach(item => {
-                            this.levelSingleOptions.push({
-                                label: item.name,
-                                value: item.id,
-                                desc: item.formData.specialtyId
-                            });
-                        });
-                    }
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-            this.$http
-                .post('/setting/byFlag', { flag: 4 })
-                .then(res => {
-                    if (res.length > 0) {
-                        res.forEach(item => {
-                            this.levelCollectiveOptions.push({
-                                label: item.name,
-                                value: item.id,
-                                desc: item.formData.specialtyId
-                            });
-                        });
-                    }
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-            this.$http
-                .post('/gradingOrganization/all', { size: 1000, query: { del: false } }, { body: 'json' })
-                .then(res => {
-                    if (res.content.length > 0) {
-                        res.content.forEach(item => {
-                            this.gradingOrganizationIdOptions.push({
-                                label: item.name,
-                                value: item.id
-                            });
-                        });
-                    }
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-            this.$http
-                .post('/organization/all', { size: 1000, query: { del: false } }, { body: 'json' })
-                .then(res => {
-                    if (res.content.length > 0) {
-                        res.content.forEach(item => {
-                            this.organizationIdOptions.push({
-                                label: item.name,
-                                value: item.id
-                            });
-                        });
-                    }
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-            this.$http
-                .post('/artType/allList')
-                .then(res => {
-                    console.log(res);
-                    this.artTypes = this.delChild(res);
-                })
-                .catch(e => {
-                    console.log(e);
-                });
         },
         },
         onDelete() {
         onDelete() {
             this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
             this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })

+ 122 - 0
src/main/vue/src/components/ReviewLog.vue

@@ -0,0 +1,122 @@
+<template>
+    <el-dialog
+        v-loading="saving"
+        @close="closeDialog"
+        title="设置复审信息"
+        center
+        :visible.sync="dialogVisible"
+        width="600px"
+    >
+        <div class="edit-view">
+            <el-form
+                :model="formData"
+                :rules="rules"
+                ref="form"
+                label-width="80px"
+                label-position="right"
+                size="small"
+                style="max-width: 500px;"
+            >
+                <el-form-item prop="reviewOnline" label="复审形式">
+                    <el-radio-group v-model="formData.reviewOnline" class="input1">
+                        <el-radio :label="true">线上</el-radio>
+                        <el-radio :label="false">线下</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item prop="reviewRatio" label="复审比例">
+                    <el-input-number type="number" v-model="formData.reviewRatio" class="input1"></el-input-number>
+                </el-form-item>
+                <el-form-item>
+                    <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
+                    <el-button @click="closeDialog">取消</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+    </el-dialog>
+</template>
+<script>
+export default {
+    props: ['dialogVisible'],
+    data() {
+        return {
+            saving: false,
+            showMore: false,
+            formData: {},
+            rules: {
+                reviewOnline: [
+                    {
+                        required: true,
+                        message: '请选择复审形式',
+                        trigger: 'blur'
+                    }
+                ],
+                reviewRatio: [
+                    {
+                        required: true,
+                        message: '请输入复审比例',
+                        trigger: 'blur'
+                    }
+                ]
+            },
+            id: ''
+        };
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        closeDialog() {
+            this.$emit('close');
+        },
+        init(id) {
+            this.id = id;
+            if (id) {
+                this.$http
+                    .get('performance/get/' + id)
+                    .then(res => {
+                        this.formData = res;
+                    })
+                    .catch(e => {
+                        console.log(e);
+                        this.$message.error(e.error);
+                    });
+            }
+        },
+        submit() {
+            let data = { ...this.formData };
+            data.id = this.id;
+            this.saving = true;
+            this.$http
+                .post('/performance/save', data, { body: 'json' })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    // this.getData();
+                    this.$forceUpdate();
+                    this.closeDialog();
+                    // this.dialogVisible = false;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.width {
+    width: 350px;
+}
+/deep/.el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+    color: #606266;
+}
+</style>

+ 2 - 2
src/main/vue/src/views/performance/ArrangeList.vue

@@ -274,7 +274,7 @@
             <el-table
             <el-table
                 :data="unGrouped"
                 :data="unGrouped"
                 row-key="id"
                 row-key="id"
-                empty-text="加载中..."
+                empty-text="暂无数据"
                 header-row-class-name="table-header-row"
                 header-row-class-name="table-header-row"
                 header-cell-class-name="table-header-cell"
                 header-cell-class-name="table-header-cell"
                 row-class-name="table-row"
                 row-class-name="table-row"
@@ -645,7 +645,7 @@ export default {
             this.$http
             this.$http
                 .post('/programme/unGrouped', { performanceId: this.form.performanceId })
                 .post('/programme/unGrouped', { performanceId: this.form.performanceId })
                 .then(res => {
                 .then(res => {
-                    this.unGrouped = res;
+                    if (res.length > 0) this.unGrouped = res;
                 })
                 })
                 .catch(e => {
                 .catch(e => {
                     console.log(e);
                     console.log(e);

+ 15 - 7
src/main/vue/src/views/performance/ProgScoreAdminList.vue

@@ -26,7 +26,7 @@
                             <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
                             <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item>
                         <el-form-item>
-                            <el-button>设置复审</el-button>
+                            <el-button @click="editRow(performanceId)">设置复审</el-button>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
                     <!-- <div v-if="!performance.online">
                     <!-- <div v-if="!performance.online">
@@ -173,20 +173,23 @@
                 </el-form>
                 </el-form>
             </el-card>
             </el-card>
         </el-dialog>
         </el-dialog>
+        <review-log :dialogVisible="isShow" @close="isShow = false" ref="public"></review-log>
     </div>
     </div>
 </template>
 </template>
 <script>
 <script>
 import delChild from '@/mixins/delChild';
 import delChild from '@/mixins/delChild';
 import { mapState } from 'vuex';
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
 import pageableTable from '@/mixins/pageableTable';
-import QrcodeVue from 'qrcode.vue';
-import { format, isSameDay, startOfDay } from 'date-fns';
-import endOfDay from 'date-fns/endOfDay';
-import addHours from 'date-fns/addHours';
+import ReviewLog from '../../components/ReviewLog';
+// import QrcodeVue from 'qrcode.vue';
+// import { format, isSameDay, startOfDay } from 'date-fns';
+// import endOfDay from 'date-fns/endOfDay';
+// import addHours from 'date-fns/addHours';
 
 
 export default {
 export default {
     name: 'ProgScoreAdminList',
     name: 'ProgScoreAdminList',
     mixins: [pageableTable, delChild],
     mixins: [pageableTable, delChild],
+    components: { ReviewLog },
     data() {
     data() {
         return {
         return {
             multipleMode: false,
             multipleMode: false,
@@ -211,11 +214,12 @@ export default {
             addressList: [],
             addressList: [],
             showViedo: false,
             showViedo: false,
             programme: {},
             programme: {},
-            index: 0
+            index: 0,
+            isShow: false
         };
         };
     },
     },
     created() {
     created() {
-        this.morning = isSameDay(addHours(new Date(), 12), new Date());
+        // this.morning = isSameDay(addHours(new Date(), 12), new Date());
 
 
         this.$http
         this.$http
             .post(
             .post(
@@ -448,6 +452,10 @@ export default {
             const end = direction + this.index;
             const end = direction + this.index;
             this.programme = { ...this.tableData[end] };
             this.programme = { ...this.tableData[end] };
             this.index = end;
             this.index = end;
+        },
+        editRow(id) {
+            this.isShow = true;
+            this.$refs.public.init(id);
         }
         }
     }
     }
 };
 };

+ 5 - 0
src/test/java/com/izouma/wenlvju/service/performance/ProgrammeScoreServiceTest.java

@@ -21,4 +21,9 @@ public class ProgrammeScoreServiceTest extends ApplicationTests {
         System.out.println(programmeService.get(1285L, "18205083565"));
         System.out.println(programmeService.get(1285L, "18205083565"));
     }
     }
 
 
+    @Test
+    public void test2(){
+        System.out.println(programmeService.ungrouped(1013L));
+    }
+
 }
 }