licailing 5 лет назад
Родитель
Сommit
3fa4ce1f25

+ 2 - 1
src/main/h5/src/views/expert/expertAdd.vue

@@ -162,7 +162,8 @@ export default {
             "/rate/save",
             "/rate/save",
             {
             {
               id: form.rateId,
               id: form.rateId,
-              status: "SUBMIT_GRADE"
+              status: "SUBMIT_GRADE",
+              submit: true
             },
             },
             { body: "json" }
             { body: "json" }
           );
           );

+ 2 - 0
src/main/java/com/izouma/wenlvju/dto/UserRegister.java

@@ -34,4 +34,6 @@ public class UserRegister {
     private String phone;
     private String phone;
 
 
     private String email;
     private String email;
+
+    private String district;
 }
 }

+ 3 - 3
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -82,9 +82,9 @@ public class RateService {
             //承办过
             //承办过
             dataMap.put("undertake", rate.isUndertakeExamination() ? "是" : "否");
             dataMap.put("undertake", rate.isUndertakeExamination() ? "是" : "否");
             //考级机构名称
             //考级机构名称
-            if (rate.isUndertakeExamination()) {
-                dataMap.put("examination", String.join(",", rate.getExamination()));
-            }
+//            if (rate.isUndertakeExamination()) {
+            dataMap.put("examination", String.join(",", rate.getExamination()));
+//            }
             //单位概况
             //单位概况
             dataMap.put("introduction", rate.getIntroduction());
             dataMap.put("introduction", rate.getIntroduction());
             //Configuration 用于读取ftl文件
             //Configuration 用于读取ftl文件

+ 5 - 0
src/main/java/com/izouma/wenlvju/service/UserService.java

@@ -4,6 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.izouma.wenlvju.config.Constants;
 import com.izouma.wenlvju.config.Constants;
 import com.izouma.wenlvju.domain.ArtType;
 import com.izouma.wenlvju.domain.ArtType;
 import com.izouma.wenlvju.domain.Organization;
 import com.izouma.wenlvju.domain.Organization;
@@ -216,6 +217,10 @@ public class UserService {
     public User regOrganization(OrganizationRegDTO dto) {
     public User regOrganization(OrganizationRegDTO dto) {
         User user = new User();
         User user = new User();
         BeanUtil.copyProperties(dto, user);
         BeanUtil.copyProperties(dto, user);
+        User byPhone = userRepo.findByPhoneAndDelFalse(user.getPhone());
+        if (ObjectUtil.isNotNull(byPhone)) {
+            throw new BusinessException("该手机号已注册");
+        }
         if (StringUtils.isNotBlank(dto.getPassword())) {
         if (StringUtils.isNotBlank(dto.getPassword())) {
             user.setPassword(new BCryptPasswordEncoder().encode(dto.getPassword()));
             user.setPassword(new BCryptPasswordEncoder().encode(dto.getPassword()));
         }
         }

+ 24 - 0
src/main/vue/src/mixins/rateStatus.js

@@ -0,0 +1,24 @@
+export default {
+    data() {
+        return {
+            statusOptions: [
+                { label: '等待初审', value: 'FIRST_REVIEW_PENDING' },
+                { label: '待分配专家组', value: 'ASSIGN_EXPERT' },
+                { label: '待专家组考察', value: 'REVIEW_PENDING' },
+                { label: '初审驳回', value: 'FIRST_REVIEW_DENY' },
+                { label: '最终评审', value: 'SUBMIT_GRADE' },
+                { label: '待提交纸质材料', value: 'SUBMIT_PAPER_MATERIALS' },
+                { label: '完成', value: 'COMPLETE' }
+            ]
+        };
+    },
+    methods: {
+        statusFormatter(row, column, cellValue, index) {
+            let selectedOption = this.statusOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        }
+    }
+};

+ 1 - 1
src/main/vue/src/views/AssignExpert.vue

@@ -76,7 +76,7 @@
                 <el-button @click="onSave" :loading="saving" type="primary" v-if="formData.status == 'ASSIGN_EXPERT'"
                 <el-button @click="onSave" :loading="saving" type="primary" v-if="formData.status == 'ASSIGN_EXPERT'"
                     >保存</el-button
                     >保存</el-button
                 >
                 >
-                <el-button @click="$router.go(-1)">取消</el-button>
+                <el-button @click="$router.go(-1)">返回</el-button>
             </el-form-item>
             </el-form-item>
         </el-form>
         </el-form>
     </div>
     </div>

+ 33 - 28
src/main/vue/src/views/RateList.vue

@@ -38,8 +38,8 @@
             <el-table-column prop="grade" label="等级">
             <el-table-column prop="grade" label="等级">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
                     <span v-if="row.grade == 'EXCELLENT'"><el-tag type="success">优秀</el-tag></span>
                     <span v-if="row.grade == 'EXCELLENT'"><el-tag type="success">优秀</el-tag></span>
-                    <span v-else-if="row.grade == 'ELIGIBLE'"><el-tag type="success">合格</el-tag></span>
-                    <span v-else-if="row.grade == 'NOT_ELIGIBLE'"><el-tag type="success">不合格</el-tag></span>
+                    <span v-else-if="row.grade == 'ELIGIBLE'"><el-tag type="warning">合格</el-tag></span>
+                    <span v-else-if="row.grade == 'NOT_ELIGIBLE'"><el-tag type="danger">不合格</el-tag></span>
                     <span v-else><el-tag type="info">审核中</el-tag></span>
                     <span v-else><el-tag type="info">审核中</el-tag></span>
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
@@ -76,6 +76,14 @@
                         v-if="(row.status === 'ASSIGN_EXPERT') & display"
                         v-if="(row.status === 'ASSIGN_EXPERT') & display"
                         >分配专家组</el-button
                         >分配专家组</el-button
                     >
                     >
+                    <el-button
+                        v-if="row.status === 'SUBMIT_PAPER_MATERIALS'"
+                        type="success"
+                        plain
+                        size="mini"
+                        @click="saveComplete(row)"
+                        >完成</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="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
                 </template>
@@ -148,24 +156,17 @@
 <script>
 <script>
 import { mapState } from 'vuex';
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
 import pageableTable from '@/mixins/pageableTable';
+import rateStatus from '@/mixins/rateStatus';
 
 
 export default {
 export default {
     name: 'RateList',
     name: 'RateList',
-    mixins: [pageableTable],
+    mixins: [pageableTable, rateStatus],
     data() {
     data() {
         return {
         return {
             multipleMode: false,
             multipleMode: false,
             search: '',
             search: '',
             url: '/rate/all2',
             url: '/rate/all2',
             downloading: false,
             downloading: false,
-            statusOptions: [
-                { label: '等待初审', value: 'FIRST_REVIEW_PENDING' },
-                { label: '待分配专家组', value: 'ASSIGN_EXPERT' },
-                { label: '待专家组考察', value: 'REVIEW_PENDING' },
-                { label: '初审驳回', value: 'FIRST_REVIEW_DENY' },
-                { label: '最终评审', value: 'SUBMIT_GRADE' },
-                { label: '待提交纸质材料', value: 'SUBMIT_PAPER_MATERIALS' }
-            ],
             supervisor: [],
             supervisor: [],
             dialogVisible: false,
             dialogVisible: false,
             rateId: '',
             rateId: '',
@@ -196,14 +197,6 @@ export default {
             .post('/user/authority', { authorityName: 'ROLE_EXPERT' })
             .post('/user/authority', { authorityName: 'ROLE_EXPERT' })
             .then(res => {
             .then(res => {
                 this.supervisor = res;
                 this.supervisor = res;
-                // if (res.length > 0) {
-                //     res.forEach(item => {
-                //         this.supervisor.push({
-                //             label: item.nickname,
-                //             value: item.id
-                //         });
-                //     });
-                // }
             })
             })
             .catch(e => {
             .catch(e => {
                 console.log(e);
                 console.log(e);
@@ -218,13 +211,6 @@ export default {
             }
             }
             return '';
             return '';
         },
         },
-        statusFormatter(row, column, cellValue, index) {
-            let selectedOption = this.statusOptions.find(i => i.value === cellValue);
-            if (selectedOption) {
-                return selectedOption.label;
-            }
-            return '';
-        },
         beforeGetData() {
         beforeGetData() {
             // return {
             // return {
             //     search: this.search,
             //     search: this.search,
@@ -390,7 +376,7 @@ export default {
         },
         },
         openScore(row) {
         openScore(row) {
             this.dialogScore = true;
             this.dialogScore = true;
-            this.sorceInfo = row;
+            this.scoreInfo = row;
         },
         },
         saveScore() {
         saveScore() {
             this.scoreInfo.status = 'SUBMIT_PAPER_MATERIALS';
             this.scoreInfo.status = 'SUBMIT_PAPER_MATERIALS';
@@ -405,7 +391,26 @@ export default {
                 .then(res => {
                 .then(res => {
                     this.$message.success('OK');
                     this.$message.success('OK');
                     this.dialogScore = false;
                     this.dialogScore = false;
-                    this.scoreInfo = '';
+                    // this.scoreInfo = '';
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        },
+        saveComplete(row) {
+            row.status = 'COMPLETE';
+            this.$http
+                .post(
+                    '/rate/save',
+                    {
+                        ...row
+                    },
+                    { body: 'json' }
+                )
+                .then(res => {
+                    this.$message.success('OK');
                     this.getData();
                     this.getData();
                 })
                 })
                 .catch(e => {
                 .catch(e => {

+ 4 - 3
src/main/vue/src/views/organization/GradeList.vue

@@ -20,12 +20,13 @@
             <el-table-column prop="label" label="二级指标" min-width="35" align="center"> </el-table-column>
             <el-table-column prop="label" label="二级指标" min-width="35" align="center"> </el-table-column>
             <el-table-column prop="sub" label="评定项目和要求" min-width="120" show-overflow-tooltip> </el-table-column>
             <el-table-column prop="sub" label="评定项目和要求" min-width="120" show-overflow-tooltip> </el-table-column>
             <el-table-column prop="score" label="分值" min-width="20" align="center"> </el-table-column>
             <el-table-column prop="score" label="分值" min-width="20" align="center"> </el-table-column>
-            <el-table-column prop="score" label="评分" min-width="20" align="center">
+            <el-table-column prop="score" label="评分" min-width="20" align="center">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
                     {{ rateInfo[row.value] }}
                     {{ rateInfo[row.value] }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
         </el-table>
         </el-table>
+        <div style="margin-top: 10px"><el-button @click="$router.go(-1)">返回</el-button></div>
     </div>
     </div>
 </template>
 </template>
 <script>
 <script>
@@ -41,7 +42,7 @@ export default {
             search: '',
             search: '',
             downloading: false,
             downloading: false,
             spanArr: [],
             spanArr: [],
-            tableHeight1: 600,
+            tableHeight1: 620,
             rateInfo: {}
             rateInfo: {}
         };
         };
     },
     },
@@ -173,7 +174,7 @@ export default {
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
 .list-view {
 .list-view {
-    height: 680px;
+    height: 730px;
 }
 }
 
 
 /deep/ .el-table {
 /deep/ .el-table {

+ 0 - 1
src/main/vue/src/views/organization/Organization.vue

@@ -4,7 +4,6 @@
             <el-tab-pane label="申请信息" name="first"><RateAudit ref="page1" @next="goNext"/></el-tab-pane>
             <el-tab-pane label="申请信息" name="first"><RateAudit ref="page1" @next="goNext"/></el-tab-pane>
             <el-tab-pane label="专家组" name="second" :disabled="status"><AssignExpert ref="page2"/></el-tab-pane>
             <el-tab-pane label="专家组" name="second" :disabled="status"><AssignExpert ref="page2"/></el-tab-pane>
             <el-tab-pane label="评分细则" name="third"><GradeList ref="page3"/></el-tab-pane>
             <el-tab-pane label="评分细则" name="third"><GradeList ref="page3"/></el-tab-pane>
-            <el-tab-pane label="提交材料" name="forth"></el-tab-pane>
         </el-tabs>
         </el-tabs>
     </div>
     </div>
 </template>
 </template>

+ 29 - 1
src/main/vue/src/views/organization/RateEdit.vue

@@ -10,6 +10,7 @@
             style="max-width: 600px;"
             style="max-width: 600px;"
         >
         >
             <div class="info-content">
             <div class="info-content">
+                <!-- <div class="tag" v-if="grade">{{ grade }}</div> -->
                 <div class="info-item">
                 <div class="info-item">
                     <div class="name">机构名称</div>
                     <div class="name">机构名称</div>
                     <div class="val">
                     <div class="val">
@@ -196,7 +197,11 @@
                         @click="onCancel"
                         @click="onCancel"
                         :loading="saving"
                         :loading="saving"
                         type="danger"
                         type="danger"
-                        v-if="formData.id && formData.status != 'CANCEL' && readonly"
+                        v-if="
+                            formData.id &&
+                                (formData.status == 'FIRST_REVIEW_PENDING' || formData.status == 'FIRST_REVIEW_DENY') &&
+                                readonly
+                        "
                         >取消申请
                         >取消申请
                     </el-button>
                     </el-button>
                     <el-button @click="$router.go(-1)">返回</el-button>
                     <el-button @click="$router.go(-1)">返回</el-button>
@@ -221,6 +226,15 @@ export default {
                     if (res.status != 'FIRST_REVIEW_PENDING' || res.submit) {
                     if (res.status != 'FIRST_REVIEW_PENDING' || res.submit) {
                         this.readonly = true;
                         this.readonly = true;
                     }
                     }
+                    if (res.grade == 'EXCELLENT') {
+                        this.grade = '优秀';
+                    } else if (res.grade == 'ELIGIBLE') {
+                        this.grade = '合格';
+                    } else if (res.grade == 'NOT_ELIGIBLE') {
+                        this.grade = '不合格';
+                    } else {
+                        this.grade = '';
+                    }
                     let data = res.rateAudits;
                     let data = res.rateAudits;
                     if (typeof data != 'undefined') {
                     if (typeof data != 'undefined') {
                         this.showAudit = true;
                         this.showAudit = true;
@@ -270,6 +284,7 @@ export default {
             saving: false,
             saving: false,
             districts: [],
             districts: [],
             readonly: false,
             readonly: false,
+            grade: '',
             rules: {
             rules: {
                 name: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
                 name: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
                 owner: [{ required: true, message: '请输入负责人', trigger: 'blur' }],
                 owner: [{ required: true, message: '请输入负责人', trigger: 'blur' }],
@@ -443,6 +458,19 @@ export default {
             width: 190px;
             width: 190px;
         }
         }
     }
     }
+    .tag {
+        margin: 98px 240px;
+        width: 50px;
+        height: 22px;
+        background: rgba(255, 165, 38, 0.3);
+        font-size: 12px;
+        line-height: 22px;
+        text-align: center;
+        color: #0f264d;
+        position: absolute;
+        left: 0;
+        top: 12px;
+    }
 }
 }
 .el-tag + .el-tag {
 .el-tag + .el-tag {
     margin-left: 10px;
     margin-left: 10px;

+ 24 - 19
src/main/vue/src/views/organization/RateOrganizerList.vue

@@ -33,10 +33,30 @@
                     <span v-else>未提交</span>
                     <span v-else>未提交</span>
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
+            <el-table-column prop="score" label="分数">
+                <template slot-scope="{ row }">
+                    <span v-if="row.score">{{ row.score }}</span>
+                    <span v-else>审核中</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="grade" label="等级">
+                <template slot-scope="{ row }">
+                    <span v-if="row.grade == 'EXCELLENT'"><el-tag type="success">优秀</el-tag></span>
+                    <span v-else-if="row.grade == 'ELIGIBLE'"><el-tag type="warning">合格</el-tag></span>
+                    <span v-else-if="row.grade == 'NOT_ELIGIBLE'"><el-tag type="danger">不合格</el-tag></span>
+                    <span v-else><el-tag type="info">审核中</el-tag></span>
+                </template>
+            </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
                     <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="word(row)" type="primary" :loading="downloading" size="mini" class="filter-item"
+                    <el-button
+                        @click="word(row)"
+                        type="primary"
+                        :loading="downloading"
+                        size="mini"
+                        class="filter-item"
+                        v-if="row.status == 'SUBMIT_PAPER_MATERIALS'"
                         >导出
                         >导出
                     </el-button>
                     </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> -->
@@ -69,24 +89,17 @@
 <script>
 <script>
 import { mapState } from 'vuex';
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
 import pageableTable from '@/mixins/pageableTable';
+import rateStatus from '@/mixins/rateStatus';
 
 
 export default {
 export default {
     name: 'RateList',
     name: 'RateList',
-    mixins: [pageableTable],
+    mixins: [pageableTable, rateStatus],
     data() {
     data() {
         return {
         return {
             multipleMode: false,
             multipleMode: false,
             search: '',
             search: '',
             url: '/rate/all',
             url: '/rate/all',
-            downloading: false,
-            statusOptions: [
-                { label: '等待初审', value: 'FIRST_REVIEW_PENDING' },
-                { label: '待分配专家组', value: 'ASSIGN_EXPERT' },
-                { label: '待专家组考察', value: 'REVIEW_PENDING' },
-                { label: '初审驳回', value: 'FIRST_REVIEW_DENY' },
-                { label: '最终评审', value: 'SUBMIT_GRADE' },
-                { label: '待提交纸质材料', value: 'SUBMIT_PAPER_MATERIALS' }
-            ]
+            downloading: false
         };
         };
     },
     },
     computed: {
     computed: {
@@ -96,13 +109,6 @@ export default {
         ...mapState(['organization'])
         ...mapState(['organization'])
     },
     },
     methods: {
     methods: {
-        statusFormatter(row, column, cellValue, index) {
-            let selectedOption = this.statusOptions.find(i => i.value === cellValue);
-            if (selectedOption) {
-                return selectedOption.label;
-            }
-            return '';
-        },
         beforeGetData() {
         beforeGetData() {
             return {
             return {
                 search: this.search,
                 search: this.search,
@@ -130,7 +136,6 @@ export default {
             this.$router.push({
             this.$router.push({
                 path: '/rateEdit',
                 path: '/rateEdit',
                 query: {
                 query: {
-                    organId: row.organizationId,
                     rateId: row.id
                     rateId: row.id
                 }
                 }
             });
             });