guhongwei 4 years ago
parent
commit
32db10cbfa

+ 5 - 0
src/router/index.js

@@ -54,6 +54,11 @@ export default new Router({
           component: () => import('../views/adminMeet/index.vue'),
           meta: { title: '专家会审' },
         },
+        {
+          path: '/adminMeet/detail',
+          component: () => import('../views/adminMeet/detail.vue'),
+          meta: { title: '专家会审记录' },
+        },
         // 完善资料
         {
           path: '/adminPerfect',

+ 105 - 0
src/views/adminMeet/detail.vue

@@ -0,0 +1,105 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <el-button type="primary" size="mini" @click="back">返回</el-button>
+        </el-col>
+        <el-col :span="24" class="down">
+          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @view="toView"></data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog title="会审意见" width="40%" :visible.sync="dialog" @closed="handleClose" :destroy-on-close="true">
+      <scoreInfo :form="info"></scoreInfo>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import scoreInfo from './parts/scoreInfo.vue';
+import dataTable from '@common/src/components/frame/filter-page-table.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  name: 'detail',
+  props: {},
+  components: {
+    dataTable,
+    scoreInfo,
+  },
+  data: function() {
+    return {
+      opera: [
+        {
+          label: '专家意见查看',
+          method: 'view',
+          // 只有专家已评分,才可看评分相亲
+          display: item => {
+            return item.status == '1' ? true : false;
+          },
+        },
+      ],
+      fields: [
+        { label: '专家姓名', prop: 'name', filter: 'input', showTip: true },
+        { label: '联系电话', prop: 'phone', showTip: true },
+        { label: '状态', prop: 'status' },
+      ],
+      list: [
+        {
+          name: '专家姓名',
+          phone: '17319450324',
+          content: '评分详情',
+          status: '0',
+        },
+        {
+          name: '专家姓名',
+          phone: '17319450324',
+          content: '评分详情',
+          status: '1',
+        },
+      ],
+      total: 0,
+      // 查看会审信息
+      dialog: false,
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    // 查询列表
+    async search({ skip = 0, limit = 10, ...info } = {}) {},
+    // 专家评分查看
+    toView({ data }) {
+      this.$set(this, `info`, data);
+      this.dialog = true;
+    },
+    // 取消查看
+    handleClose() {
+      this.form = {};
+      this.dialog = false;
+    },
+    // 返回列表
+    back() {
+      this.$router.push({ path: '/adminMeet' });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    margin: 0 0 10px 0;
+    text-align: right;
+  }
+}
+</style>

+ 43 - 4
src/views/adminMeet/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="down">
-          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @change="toChange"></data-table>
+          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @change="toChange" @view="toView" @edit="toEdit"></data-table>
         </el-col>
       </el-col>
     </el-row>
@@ -18,6 +18,16 @@
         </template>
       </data-form>
     </el-dialog>
+    <el-dialog title="会审总结" width="40%" :visible.sync="sumDialog" @closed="handleClose" :destroy-on-close="true">
+      <data-form :data="sumForm" :fields="sumfields" :rules="{}" @save="sumSave">
+        <template #radios="{item}">
+          <template v-if="item.model === 'status'">
+            <el-radio label="0">通过</el-radio>
+            <el-radio label="1">不通过</el-radio>
+          </template>
+        </template>
+      </data-form>
+    </el-dialog>
   </div>
 </template>
 
@@ -42,6 +52,14 @@ export default {
           label: '选择会审专家',
           method: 'change',
         },
+        {
+          label: '查看会审记录',
+          method: 'view',
+        },
+        {
+          label: '会审总结',
+          method: 'edit',
+        },
       ],
       fields: [
         { label: '成果编号', prop: 'basic.achieve_num', filter: 'input', showTip: true },
@@ -70,6 +88,13 @@ export default {
         { id: '1', name: '专家一' },
         { id: '2', name: '专家二' },
       ],
+      // 会审总结
+      sumDialog: false,
+      sumForm: {},
+      sumfields: [
+        { label: '总结状态', model: 'status', type: 'radio' },
+        { label: '总结意见', model: 'content', type: 'textarea' },
+      ],
     };
   },
   async created() {
@@ -78,12 +103,11 @@ export default {
   methods: {
     // 查询列表
     async search({ skip = 0, limit = 10, ...info } = {}) {},
-    // 专家评分查看
+    // 选择专家会审
     toChange({ data }) {
       this.dialog = true;
-      // this.$router.push({ path: '/adminMeet/detail', query: { id: data.id } });
     },
-    // 保存专家信息
+    // 保存专家会审列表
     toSave({ data }) {
       console.log(data);
       this.handleClose();
@@ -92,8 +116,23 @@ export default {
     handleClose() {
       this.form = {};
       this.dialog = false;
+      this.sumForm = {};
+      this.sumDialog = false;
       this.search();
     },
+    // 查看专家会审记录
+    toView({ data }) {
+      this.$router.push({ path: '/adminMeet/detail', query: { id: data.id } });
+    },
+    // 会审总结
+    toEdit({ data }) {
+      this.sumDialog = true;
+    },
+    // 会审总结提交
+    sumSave({ data }) {
+      console.log(data);
+      this.handleClose();
+    },
   },
   computed: {
     ...mapState(['user']),

+ 43 - 0
src/views/adminMeet/parts/scoreInfo.vue

@@ -0,0 +1,43 @@
+<template>
+  <div id="scoreInfo">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="name">
+          <el-form ref="form" :model="form" label-width="80px">
+            <el-form-item label="专家姓名">
+              <el-input v-model="form.name" readonly></el-input>
+            </el-form-item>
+            <el-form-item label="联系电话">
+              <el-input v-model="form.phone" readonly></el-input>
+            </el-form-item>
+            <el-form-item label="会审意见">
+              <el-input type="textarea" readonly v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }"> </el-input>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'scoreInfo',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped></style>