lrf402788946 4 years ago
parent
commit
14a0cb95f5

+ 63 - 10
src/views/userCenter/projectInfo/index.vue

@@ -8,7 +8,31 @@
             <el-col :span="24" class="list">
               <el-tabs v-model="active" type="card">
                 <el-tab-pane label="已参加" name="first">
-                  <data-table :fields="fields" :opera="opera" :data="twoList" :total="twoTotal" @query="data => search(data, true)" @edit="toEdit"></data-table>
+                  <data-table
+                    v-if="tabs === 'first'"
+                    :fields="fields"
+                    :opera="opera"
+                    :data="twoList"
+                    :total="twoTotal"
+                    @query="data => search(data, true)"
+                    @edit="toGetList"
+                  ></data-table>
+                  <el-row v-else>
+                    <el-col :span="24" style="text-align:right; padding:15px">
+                      <el-button type="primary" size="mini" @click="toAdd" style="margin-right:20px">添加</el-button>
+                      <el-button type="primary" size="mini" @click="tabs = 'first'">返回</el-button>
+                    </el-col>
+                    <el-col :span="24">
+                      <data-table
+                        :fields="solicFields"
+                        :opera="solicOpera"
+                        :data="solicList"
+                        :total="solicTotal"
+                        @query="getSolicList"
+                        @edit="toSolicEdit"
+                      ></data-table>
+                    </el-col>
+                  </el-row>
                 </el-tab-pane>
                 <el-tab-pane label="未参加" name="second">
                   <data-table :fields="fields" :opera="opera" :data="oneList" :total="oneTotal" @query="data => search(data, false)" @add="toAdd"></data-table>
@@ -40,6 +64,7 @@
 </template>
 
 <script>
+const _ = require('lodash');
 import dataTable from '@/components/data-table.vue';
 import questionInfo from './parts/questionInfo.vue';
 import projectForm from './parts/projectForm.vue';
@@ -63,14 +88,16 @@ export default {
       display: 'list',
       // 列表
       active: 'first',
+      // 已参加列表
+      tabs: 'first',
       opera: [
         {
-          label: '添加项目征集信息',
+          label: '查看项目征集信息',
           method: 'add',
           display: i => !i.exist,
         },
         {
-          label: '修改项目征集信息',
+          label: '查看项目征集信息',
           method: 'edit',
           display: i => i.exist,
         },
@@ -86,6 +113,21 @@ export default {
       // 已参加
       twoList: [],
       twoTotal: 0,
+      solicList: [],
+      solicTotal: 0,
+      solicFields: [
+        { label: '项目名称', prop: 'name' },
+        { label: '项目负责人', prop: 'pro_user' },
+        { label: '联系电话', prop: 'pro_phone' },
+        { label: '状态', prop: 'status', format: i => (i === '0' ? '草稿' : '已提交') },
+      ],
+      solicOpera: [
+        {
+          label: '修改',
+          method: 'edit',
+          display: i => i.status === '0',
+        },
+      ],
       // 添加,修改
       formActive: 'first',
       // 调研调查信息
@@ -111,19 +153,29 @@ export default {
     },
     toAdd({ data }) {
       this.display = 'detail';
-      this.$set(this, 'info', data);
-      this.form.question_id = data._id;
+      if (data) this.$set(this, 'info', data);
+      this.form.question_id = _.get(data, '_id', this.info._id);
       this.form.user_id = this.user.userid;
     },
     async toEdit({ data }) {
-      const res = await this.query({ question_id: data._id, user_id: this.user.userid });
+      this.display = 'detail';
+      this.$set(this, 'info', data);
+    },
+    async toGetList({ data }) {
+      this.$set(this, 'info', data);
+      await this.getSolicList({}, data);
+      this.tabs = 'sec';
+    },
+    async getSolicList({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ question_id: this.info._id, user_id: this.user.userid, skip, limit });
       if (this.$checkRes(res)) {
-        const data = _.head(res.data);
-        if (!data) throw new Error('未找到要修改的数据');
-        this.$set(this, 'form', data);
+        this.$set(this, 'solicList', res.data);
+        this.$set(this, 'solicTotal', res.total);
       }
+    },
+    toSolicEdit({ data }) {
+      this.$set(this, 'form', data);
       this.display = 'detail';
-      this.$set(this, 'info', data);
     },
     // 提交保存
     async onSubmit({ data }) {
@@ -137,6 +189,7 @@ export default {
       if (this.$checkRes(res, '保存成功', res.errmsg || '保存失败')) {
         this.search({}, true);
         this.search({}, false);
+        if (this.tabs === 'sec') this.getSolicList();
         this.back();
       }
     },

+ 34 - 67
src/views/userCenter/projectInfo/parts/projectForm.vue

@@ -146,125 +146,84 @@
             <el-col :span="24" class="langInfo">
               <el-form-item prop="project_back">
                 <el-col :span="21" slot="label">
-                  项目背景
+                  <p class="title">项目背景</p>
+                  <p class="placs">(含国内外同类研究现状)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.project_back"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(含国内外同类研究现状)"
-                  ></el-input>
+                  <el-input v-model="form.project_back" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="langInfo">
               <el-form-item prop="sign">
                 <el-col :span="21" slot="label">
-                  立项意义
+                  <p class="title">立项意义</p>
+                  <p class="placs">(含解决“卡脖子”技术问题及在行业中所处的地位和作用)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.sign"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(含解决“卡脖子”技术问题及在行业中所处的地位和作用)"
-                  ></el-input>
+                  <el-input v-model="form.sign" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="langInfo">
               <el-form-item prop="work_basics">
                 <el-col :span="21" slot="label">
-                  前期基础
+                  <p class="title">前期基础</p>
+                  <p class="placs">(含知识产权状况)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.work_basics"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(含知识产权状况)"
-                  ></el-input>
+                  <el-input v-model="form.work_basics" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="langInfo">
               <el-form-item prop="content">
                 <el-col :span="21" slot="label">
-                  研究内容
+                  <p class="title">研究内容</p>
+                  <p class="placs">(含项目创新点)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.content"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(含项目创新点)"
-                  ></el-input>
+                  <el-input v-model="form.content" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="langInfo">
               <el-form-item prop="route">
                 <el-col :span="21" slot="label">
-                  技术路线
+                  <p class="title">技术路线</p>
+                  <p class="placs">(含拟解决关键技术)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.route"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(含拟解决关键技术)"
-                  ></el-input>
+                  <el-input v-model="form.route" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="langInfo">
               <el-form-item prop="quota">
                 <el-col :span="21" slot="label">
-                  核心指标
+                  <p class="title">核心指标</p>
+                  <p class="placs">(要求可量化、可考核、可检测)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.quota"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(要求可量化、可考核、可检测)"
-                  ></el-input>
+                  <el-input v-model="form.quota" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="langInfo">
               <el-form-item prop="influence">
                 <el-col :span="21" slot="label">
-                  经济效益
+                  <p class="title">经济效益</p>
+                  <p class="placs">(含市场分析和产业化预期)</p>
                 </el-col>
                 <el-col :span="24">
-                  <el-input
-                    v-model="form.influence"
-                    type="textarea"
-                    maxlength="500"
-                    show-word-limit
-                    :autosize="{ minRows: 5, maxRows: 5 }"
-                    placeholder="(含市场分析和产业化预期)"
-                  ></el-input>
+                  <el-input v-model="form.influence" type="textarea" maxlength="500" show-word-limit :autosize="{ minRows: 5, maxRows: 5 }"></el-input>
                 </el-col>
               </el-form-item>
             </el-col>
             <el-col :span="24" class="btn">
               <el-button type="danger" size="mini" @click="resetBtn">取消</el-button>
-              <el-button type="primary" size="mini" @click="onSubmit">保存</el-button>
+              <el-button type="primary" size="mini" @click="onSubmit('0')">保存</el-button>
+              <el-button type="success" size="mini" @click="onSubmit('1')">提交</el-button>
             </el-col>
           </el-col>
         </el-form>
@@ -298,8 +257,8 @@ export default {
       this.$emit('resetBtn');
     },
     // 保存
-    onSubmit() {
-      this.$emit('onSubmit', { data: this.form });
+    onSubmit(status) {
+      this.$emit('onSubmit', { data: { ...this.form, status } });
     },
   },
   computed: {
@@ -330,8 +289,16 @@ export default {
     }
     /deep/.langInfo .el-form-item__label {
       height: 117px;
-      padding: 35px 0;
+      line-height: 25px;
+      padding: 15px 0;
     }
+    .langInfo .placs {
+      font-size: 12px;
+    }
+    .langInfo .title {
+      font-weight: bold;
+    }
+
     /deep/.langSelect .el-select {
       width: 100%;
     }