reloaded 5 роки тому
батько
коміт
d9f9a61615
4 змінених файлів з 232 додано та 49 видалено
  1. 45 0
      src/store/demand.js
  2. 2 0
      src/store/index.js
  3. 179 43
      src/views/pcenter/demand.vue
  4. 6 6
      src/views/pcenter/pinfo.vue

+ 45 - 0
src/store/demand.js

@@ -0,0 +1,45 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  demandInfo: `/api/count/demand`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit = 10, ...info } = {}) {
+    const res = await this.$axios.$get(api.demandInfo, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.demandInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.demandInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...info } = {}) {
+    const res = await this.$axios.$post(`${api.demandInfo}/update/${id}`, {
+      ...info,
+    });
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.demandInfo}/${payload}`);
+    return res;
+  },
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 2 - 0
src/store/index.js

@@ -10,6 +10,7 @@ import expert from './expert';
 import login from './login';
 import user from './user';
 import news from './news';
+import demand from './demand';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -25,5 +26,6 @@ export default new Vuex.Store({
     expert,
     user,
     news,
+    demand,
   },
 });

+ 179 - 43
src/views/pcenter/demand.vue

@@ -3,8 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="list" v-if="display">
-          <el-col :span="24" class="top"><el-button type="primary" size="mini" @click="add">添加</el-button></el-col>
-          <el-col :span="24" class="main"></el-col>
+          <el-col :span="24" class="top" v-if="user.type === '3'"><el-button type="primary" size="mini" @click="add">添加</el-button></el-col>
           <template>
             <el-table :data="tableData" border style="width: 100%">
               <el-table-column prop="name" label="需求技术名称" align="center"> </el-table-column>
@@ -24,49 +23,92 @@
                   }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="操作"> </el-table-column>
+              <el-table-column label="操作" align="center">
+                <template slot-scope="scope">
+                  <el-button size="mini" @click="view(scope.row.id)">查看</el-button>
+                  <el-button type="danger" size="mini" @click="del(scope.row.id)">删除</el-button>
+                  <el-button v-if="user.type === '3' && scope.row.status == '0'" type="success" @click="refer(scope.row.id, { status: '1' })"
+                    >提交审核</el-button
+                  >
+                  <el-button v-if="user.type === '0' || user.type === '1'" type="success" size="mini" @click="refer(scope.row.id, { status: '2' })"
+                    >审核通过</el-button
+                  >
+                  <el-button v-if="user.type === '0' || user.type === '1'" type="warning" size="mini" @click="refer(scope.row.id, { status: '3' })"
+                    >审核拒绝</el-button
+                  >
+                </template>
+              </el-table-column>
             </el-table>
           </template>
         </el-col>
         <el-col :span="24" class="datail" v-else>
-          <el-form ref="form" :model="form" label-width="120px">
-            <el-form-item label="需求技术名称">
-              <el-input v-model="form.name" placeholder="请输入需求技术名称"></el-input>
-            </el-form-item>
-            <el-form-item label="所属领域">
-              <el-radio-group v-model="form.field">
-                <el-radio label="工业">工业</el-radio>
-                <el-radio label="农业">农业</el-radio>
-                <el-radio label="社会发展">社会发展</el-radio>
-                <el-radio label="医疗健康">医疗健康</el-radio>
-              </el-radio-group>
-            </el-form-item>
-            <el-form-item label="拟投入预算(万)">
-              <el-input v-model="form.budget" placeholder="请输入拟投入预算(万)"></el-input>
-            </el-form-item>
-            <el-form-item label="需求截止日期" prop="enddate">
-              <el-date-picker v-model="form.enddate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="请选择日期"> </el-date-picker>
-            </el-form-item>
-            <el-form-item label="难题或瓶颈问题">
-              <el-input
-                v-model="form.problem"
-                type="textarea"
-                placeholder="阐述在生产经营、项目建设、科研活动、产业化方向中遇到的技术难题或瓶颈问题及需达到的技术指标"
-              ></el-input>
-            </el-form-item>
-            <el-form-item label="企业解决技术需求已具备的条件">
-              <el-input v-model="form.problem" type="textarea" placeholder="企业承接成果、技术所具备的技术人员、设备、资金等基础条件及其他配套条件"></el-input>
-            </el-form-item>
-            <el-form-item label="合作方式">
-              <el-radio-group v-model="form.type">
-                <el-radio label="技术转让">技术转让</el-radio>
-                <el-radio label="技术服务">技术服务</el-radio>
-                <el-radio label="技术许可">技术许可</el-radio>
-                <el-radio label="技术融资">技术融资</el-radio>
-                <el-radio label="其他">其他</el-radio>
-              </el-radio-group>
-            </el-form-item>
-          </el-form>
+          <el-col class="top"><el-button type="primary" size="mini" @click="back">返回</el-button></el-col>
+          <el-col class="main">
+            <el-form ref="form" :model="form" label-width="120px" :rules="rules">
+              <el-form-item label="需求技术名称" prop="name">
+                <el-input :disabled="disabled" v-model="form.name" placeholder="请输入需求技术名称"></el-input>
+              </el-form-item>
+              <el-form-item label="所属领域" prop="field">
+                <el-radio-group :disabled="disabled" v-model="form.field">
+                  <el-radio label="工业">工业</el-radio>
+                  <el-radio label="农业">农业</el-radio>
+                  <el-radio label="社会发展">社会发展</el-radio>
+                  <el-radio label="医疗健康">医疗健康</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="拟投入预算(万)">
+                <el-input :disabled="disabled" v-model="form.budget" placeholder="请输入拟投入预算(万)"></el-input>
+              </el-form-item>
+              <el-form-item label="需求截止日期" prop="enddate">
+                <el-date-picker :disabled="disabled" v-model="form.enddate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="请选择日期">
+                </el-date-picker>
+              </el-form-item>
+              <el-form-item label="难题或瓶颈问题">
+                <el-input
+                  :disabled="disabled"
+                  v-model="form.problem"
+                  type="textarea"
+                  placeholder="阐述在生产经营、项目建设、科研活动、产业化方向中遇到的技术难题或瓶颈问题及需达到的技术指标"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="企业解决技术需求已具备的条件">
+                <el-input
+                  :disabled="disabled"
+                  v-model="form.condition"
+                  type="textarea"
+                  placeholder="企业承接成果、技术所具备的技术人员、设备、资金等基础条件及其他配套条件"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="合作方式" prop="type">
+                <el-radio-group :disabled="disabled" v-model="form.type">
+                  <el-radio label="技术转让">技术转让</el-radio>
+                  <el-radio label="技术服务">技术服务</el-radio>
+                  <el-radio label="技术许可">技术许可</el-radio>
+                  <el-radio label="技术融资">技术融资</el-radio>
+                  <el-radio label="其他">其他</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="是否在网页显示" prop="is_display">
+                <el-radio-group :disabled="disabled" v-model="form.is_display">
+                  <el-radio label="0">是</el-radio>
+                  <el-radio label="1">否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="状态" prop="status">
+                <el-radio-group :disabled="disabled" v-model="form.status">
+                  <el-radio label="0">保存草稿</el-radio>
+                  <el-radio label="1">提交审核</el-radio>
+                  <el-radio label="2" v-if="user.type === '0' || user.type === '1'">审核通过</el-radio>
+                  <el-radio label="3" v-if="user.type === '0' || user.type === '1'">审核拒绝</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item>
+                <el-button v-if="user.type === '3'" type="primary" @click="onSubmit()">提交</el-button>
+                <el-button v-if="user.type === '0' || user.type === '1'" type="success" @click="refer(scope.row.id, { status: '2' })">审核通过</el-button>
+                <el-button v-if="user.type === '0' || user.type === '1'" type="warning" @click="refer(scope.row.id, { status: '3' })">审核拒绝</el-button>
+              </el-form-item>
+            </el-form>
+          </el-col>
         </el-col>
       </el-col>
     </el-row>
@@ -74,6 +116,8 @@
 </template>
 
 <script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: demand } = createNamespacedHelpers('demand');
 export default {
   name: 'demand',
   props: {},
@@ -82,13 +126,95 @@ export default {
     tableData: [],
     display: true,
     form: {},
+    rules: {
+      name: [{ required: true, message: '请输入需求技术名称', trigger: 'blur' }],
+      field: [{ required: true, message: '请选择所属领域', trigger: 'blur' }],
+      is_display: [{ required: true, message: '请选择是否在网页显示', trigger: 'blur' }],
+      status: [{ required: true, message: '请选择状态', trigger: 'blur' }],
+      type: [{ required: true, message: '请选择合作方式', trigger: 'blur' }],
+    },
+    disabled: false,
   }),
-  created() {},
-  computed: {},
+  created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
   methods: {
+    ...demand(['update', 'fetch', 'query', 'create', 'delete']),
+    async search() {
+      console.log(this.user);
+
+      let res = {};
+      if (this.user.type === '0' || this.user.type === '1') {
+        res = await this.query({ skip: 0, limit: 10 });
+      }
+      if (this.user.type === '3') {
+        res = await this.query({ skip: 0, limit: 10, uid: this.user.uid });
+      }
+      this.$set(this, `tableData`, res.data);
+    },
+    async view(id) {
+      const res = await this.fetch(id);
+      this.$set(this, `form`, res.data);
+      if (this.user.type === '0' || this.user.type === '1' || res.data.status != '0') {
+        this.disabled = true;
+      }
+      this.display = false;
+    },
+    async del(id) {
+      const res = await this.delete(id);
+      if (res.errcode === 0) {
+        this.$message({
+          message: '信息删除成功',
+          type: 'success',
+        });
+        this.search();
+      } else {
+        this.$message.error('信息删除失败');
+      }
+    },
+    async refer(id, { status }) {
+      const res = await this.update({ id, status });
+      if (res.errcode === 0) {
+        this.$message({
+          message: '信息修改成功',
+          type: 'success',
+        });
+        this.search();
+      } else {
+        this.$message.error('信息修改失败');
+      }
+    },
     add() {
       this.display = false;
     },
+    // 返回
+    back() {
+      console.log(this.display);
+      this.display = true;
+    },
+    async onSubmit() {
+      let res = {};
+      let data = JSON.parse(JSON.stringify(this.form));
+      if (data.id) {
+        res = await this.update(data);
+      } else {
+        data.uid = this.user.uid;
+        res = await this.create(data);
+      }
+      if (res.errcode === 0) {
+        this.$message({
+          message: '信息创建成功',
+          type: 'success',
+        });
+        this.display = true;
+        this.search();
+      } else {
+        this.$message.error('信息创建失败');
+      }
+    },
   },
 };
 </script>
@@ -109,4 +235,14 @@ export default {
 /deep/ .el-textarea__inner {
   width: 600px;
 }
+.list /deep/.el-button {
+  display: inline-block;
+  height: 30px;
+  width: 48px;
+  text-align: center;
+  line-height: 20px;
+  padding: 0;
+  margin: 5px 1px;
+  font-size: 11px;
+}
 </style>

+ 6 - 6
src/views/pcenter/pinfo.vue

@@ -3,16 +3,16 @@
     <el-row>
       <el-col :span="24">
         <el-form ref="form" :model="form" label-width="120px" :rules="rules">
-          <el-form-item label="用户名" prop="name">
+          <el-form-item label="用户名" prop="name">
             <el-input v-model="form.name"></el-input>
           </el-form-item>
-          <el-form-item label="手机号" prop="phone">
+          <el-form-item label="手机号" prop="phone">
             <el-input v-model="form.phone"></el-input
             ><span style="color:red;"
               ><i class="el-icon-warning" style="margin-right:5px;"></i>如果您修改手机号,那么登录时使用的手机号也会发生变更,请谨慎修改!</span
             >
           </el-form-item>
-          <el-form-item v-if="this.user.type != '3'" label="身份证号" prop="id_number">
+          <el-form-item v-if="this.user.type != '3'" label="身份证号" prop="id_number">
             <el-input v-model="form.id_number" @input="inputIdnumber()"></el-input>
           </el-form-item>
           <el-form-item v-if="this.user.type != '3'" label="出生年月" prop="birthday">
@@ -25,15 +25,15 @@
               <el-radio label="女">女</el-radio>
             </el-radio-group>
           </el-form-item>
-          <el-form-item v-if="this.user.type != '3'" label="家庭住址">
+          <el-form-item v-if="this.user.type != '3'" label="家庭住址">
             <el-input v-model="form.address"></el-input>
           </el-form-item>
-          <el-form-item v-if="this.user.type === '0' || this.user.type === '1'" label="部门">
+          <el-form-item v-if="this.user.type === '0' || this.user.type === '1'" label="部门">
             <el-select v-model="form.dept_id" filterable placeholder="请选择部门">
               <el-option v-for="(item, index) in deptList" :key="index" :label="item.name" :value="item._id"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item v-if="this.user.type === '0' || this.user.type === '1'" label="职务">
+          <el-form-item v-if="this.user.type === '0' || this.user.type === '1'" label="职务">
             <el-select v-model="form.level_id" filterable placeholder="请选择职务">
               <el-option v-for="(item, index) in levelList" :key="index" :label="item.name" :value="item._id"></el-option>
             </el-select>