guhongwei 4 yıl önce
ebeveyn
işleme
00a00a6324

+ 179 - 49
src/views/market/detail-model/model-4.vue

@@ -6,30 +6,121 @@
           <slot></slot>
         </el-col>
         <el-col :span="24" class="info">
-          <el-col :span="24" class="title">
-            {{ data.title }}
-          </el-col>
-          <el-col :span="24" class="other">
-            <el-col :span="12" class="text">
-              信息来源:<span>{{ data.origin }}</span>
+          <el-col :span="24" class="top">
+            <el-col :span="7" class="left" v-if="data.image != ''">
+              <el-carousel trigger="click" height="305px" :autoplay="false">
+                <el-carousel-item v-for="(item, index) in data.image" :key="index">
+                  <el-image :src="item.url" style="width: 99%; height: 345px; border: 1px solid #ccc"></el-image>
+                </el-carousel-item>
+              </el-carousel>
             </el-col>
-            <el-col :span="12" class="text">
-              发布时间:<span>{{ data.release_time }}</span>
+            <el-col :span="7" v-else class="achieveImage">
+              <!-- <el-image :src="achievezb" style="height:305px;"></el-image>
+            <el-col :span="24" class="company textOver">
+              {{ data.company }}
+            </el-col>
+            <el-col :span="24" class="aName">
+              {{ data.name }}
+            </el-col>
+            <el-col :span="24" class="a-brief">{{ data.requirementdesc }}</el-col>
+            <el-col :span="24" class="cont">
+              <el-col :span="24" class="a-field">领域:{{ data.field }}</el-col>
+              <el-col :span="24" class="a-contacts">联系人:{{ data.contacts }}</el-col>
+            </el-col> -->
+              <p>紧急程度</p>
+              <p><el-rate v-model="value" disabled :max="max" :texts="texts" :colors="colors"> </el-rate></p>
+              <!-- <p>{{ data.degreeurgency || '暂无' }}</p> -->
+            </el-col>
+            <el-col :span="17" class="right">
+              <el-col :span="24" class="name textOver">
+                {{ data.name || '暂无' }}
+              </el-col>
+              <el-col :span="24">
+                <el-col :span="4" class="otherInfo textOver"> 需求方 </el-col>
+                <el-col :span="20" class="otherInfo textOver">
+                  {{ data.company }}
+                  <el-link v-if="data.companyweb != null || ''" :href="data.companyweb" :underline="false" target="_blank">({{ data.companyweb }})</el-link>
+                </el-col>
+              </el-col>
+              <el-col :span="12">
+                <el-col :span="8" class="otherInfo textOver"> 所属领域 </el-col>
+                <el-col :span="16" class="otherInfo textOver">
+                  {{ data.field || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="12">
+                <el-col :span="8" class="otherInfo textOver"> 合作方式 </el-col>
+                <el-col :span="16" class="otherInfo textOver">
+                  {{ data.cooperation ? data.cooperation : '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="12">
+                <el-col :span="8" class="otherInfo textOver"> 紧急程度 </el-col>
+                <el-col :span="16" class="otherInfo textOver"> {{ data.demand || '暂无' }} </el-col>
+              </el-col>
+              <el-col :span="12">
+                <el-col :span="8" class="otherInfo textOver"> 投资预算 </el-col>
+                <el-col :span="16" class="otherInfo textOver"> {{ data.budget || '暂无' }} </el-col>
+              </el-col>
+              <el-col :span="12">
+                <el-col :span="8" class="otherInfo textOver"> 联系人 </el-col>
+                <el-col :span="16" class="otherInfo textOver">
+                  {{ data.contacts || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="12">
+                <el-col :span="8" class="otherInfo textOver"> QQ/微信 </el-col>
+                <el-col :span="16" class="otherInfo textOver">
+                  {{ data.qqwx || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24">
+                <el-col :span="4" class="otherInfo textOver"> 联系电话 </el-col>
+                <el-col :span="20" class="otherInfo textOver">
+                  {{ getphone(data.phone) || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24">
+                <el-col :span="4" class="otherInfo textOver"> 电子邮箱 </el-col>
+                <el-col :span="20" class="otherInfo textOver">
+                  {{ data.email || '暂无' }}
+                </el-col>
+              </el-col>
             </el-col>
           </el-col>
-          <el-col :span="24" class="content">
-            <p v-html="data.content"></p>
-          </el-col>
-          <el-col :span="24" class="image" v-if="data.image">
-            <el-carousel height="300px" :interval="2000">
-              <el-carousel-item v-for="(tag, index) in data.image" :key="index">
-                <el-image :src="tag.url"></el-image>
-              </el-carousel-item>
-            </el-carousel>
-          </el-col>
-          <el-col :span="24" class="fileUrl" v-if="data.fileUrl && data.fileUrl.length > 0">
-            <p>附件:</p>
-            <el-link :href="data.fileUrl[0].url">{{ data.fileUrl[0].name }}</el-link>
+          <el-col :span="24" class="down">
+            <el-col :span="24" class="downInfo">
+              <el-col :span="4" class="tit">
+                <h2>需求说明</h2>
+              </el-col>
+              <el-col :span="20" class="info">
+                {{ data.requirementdesc || '暂无' }}
+              </el-col>
+            </el-col>
+            <el-col :span="24" class="downInfo">
+              <el-col :span="4" class="tit">
+                <h2>预期目标</h2>
+              </el-col>
+              <el-col :span="20" class="info">
+                {{ data.expect || '暂无' }}
+              </el-col>
+            </el-col>
+            <el-col :span="24" class="downInfo">
+              <el-col :span="4" class="tit">
+                <h2>需求现状</h2>
+              </el-col>
+              <el-col :span="20" class="info">
+                {{ data.present || '暂无' }}
+              </el-col>
+            </el-col>
+            <el-col :span="24" class="downInfo">
+              <el-col :span="4" class="tit">
+                <h2>合作要求</h2>
+              </el-col>
+              <el-col :span="20" class="info">
+                {{ data.condition || '暂无' }}
+              </el-col>
+            </el-col>
           </el-col>
         </el-col>
       </el-col>
@@ -38,6 +129,7 @@
 </template>
 
 <script>
+const _ = require('lodash');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'model-0',
@@ -46,10 +138,30 @@ export default {
   },
   components: {},
   data: function () {
-    return {};
+    return {
+      value: 1,
+      max: 3,
+      colors: ['#ff0000', '#ff0000', '#ff0000'],
+      texts: ['一般', '紧急', '长期'],
+    };
   },
   created() {},
-  methods: {},
+  methods: {
+    // 隐藏手机号
+    getphone(value) {
+      if (value == undefined) {
+        return '暂无';
+      } else {
+        if (value.length === 11) {
+          let start = value.slice(0, 4);
+          let end = value.slice(-3);
+          return `${start}****${end}`;
+        } else {
+          return value;
+        }
+      }
+    },
+  },
   computed: {
     ...mapState(['user']),
   },
@@ -73,40 +185,58 @@ export default {
     margin: 0 0 10px 0;
   }
   .info {
-    .title {
-      font-size: 18px;
-      text-align: center;
-      font-weight: bold;
-      margin: 0 0 15px 0;
+    .top {
+      height: 315px;
+      overflow: hidden;
+      .right {
+        padding: 0 0 0 10px;
+        .name {
+          font-size: 18px;
+          font-weight: bold;
+          padding: 10px;
+          border: 1px solid #ccc;
+          text-align: center;
+        }
+        .otherInfo {
+          padding: 10px;
+          font-size: 16px;
+          border: 1px solid #ccc;
+        }
+      }
     }
-    .other {
+    .down {
       margin: 0 0 15px 0;
-      .text {
-        font-size: 14px;
-        color: #666;
-        text-align: right;
-        padding: 0 10px;
-        span {
-          color: #000;
+      .downInfo {
+        border: 1px solid #ccc;
+        .tit {
+          height: 150px;
+          line-height: 150px;
+          text-align: center;
+          border-right: 1px solid #ccc;
+        }
+        .info {
+          font-size: 16px;
+          padding: 10px;
+          min-height: 150px;
         }
       }
-      .text:nth-child(2) {
+    }
+    .achieveImage {
+      height: 305px;
+      overflow: hidden;
+      p:nth-child(1) {
+        font-size: 25px;
         text-align: left;
+        padding: 10px 0;
       }
-    }
-    .content {
-      font-size: 16px;
-      text-indent: 2rem;
-      margin: 0 0 15px 0;
-    }
-    .image {
-      text-align: center;
-      padding: 0 26%;
-      .el-image {
-        width: 100%;
-        height: 100%;
+      p:nth-child(2) {
+        margin: 60px 0 0 0;
+        text-align: center;
       }
     }
   }
 }
+/deep/.el-rate__icon {
+  font-size: 60px;
+}
 </style>

+ 112 - 0
src/views/market/detail-model/model-5.vue

@@ -0,0 +1,112 @@
+<template>
+  <div id="model-0">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="btn">
+          <slot></slot>
+        </el-col>
+        <el-col :span="24" class="info">
+          <el-col :span="24" class="title">
+            {{ data.title }}
+          </el-col>
+          <el-col :span="24" class="other">
+            <el-col :span="12" class="text">
+              信息来源:<span>{{ data.origin }}</span>
+            </el-col>
+            <el-col :span="12" class="text">
+              发布时间:<span>{{ data.release_time }}</span>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="content">
+            <p v-html="data.content"></p>
+          </el-col>
+          <el-col :span="24" class="image" v-if="data.image">
+            <el-carousel height="300px" :interval="2000">
+              <el-carousel-item v-for="(tag, index) in data.image" :key="index">
+                <el-image :src="tag.url"></el-image>
+              </el-carousel-item>
+            </el-carousel>
+          </el-col>
+          <el-col :span="24" class="fileUrl" v-if="data.fileUrl && data.fileUrl.length > 0">
+            <p>附件:</p>
+            <el-link :href="data.fileUrl[0].url">{{ data.fileUrl[0].name }}</el-link>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'model-0',
+  props: {
+    data: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .btn {
+    text-align: right;
+    margin: 0 0 10px 0;
+  }
+  .info {
+    .title {
+      font-size: 18px;
+      text-align: center;
+      font-weight: bold;
+      margin: 0 0 15px 0;
+    }
+    .other {
+      margin: 0 0 15px 0;
+      .text {
+        font-size: 14px;
+        color: #666;
+        text-align: right;
+        padding: 0 10px;
+        span {
+          color: #000;
+        }
+      }
+      .text:nth-child(2) {
+        text-align: left;
+      }
+    }
+    .content {
+      font-size: 16px;
+      text-indent: 2rem;
+      margin: 0 0 15px 0;
+    }
+    .image {
+      text-align: center;
+      padding: 0 26%;
+      .el-image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
+}
+</style>

+ 8 - 3
src/views/market/list-model/model-4.vue

@@ -4,14 +4,14 @@
       <el-col :span="24" class="main">
         <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detail(item.id)">
           <el-col :span="24" class="title textOver">
-            {{ item.title }}
+            {{ item.name }}
           </el-col>
           <el-col :span="24" class="other">
             <el-col :span="12" class="text textOver">
-              信息来源:<span>{{ item.origin }}</span>
+              所属领域:<span>{{ item.field }}</span>
             </el-col>
             <el-col :span="12" class="text textOver">
-              发布时间:<span>{{ item.release_time }}</span>
+              发布时间:<span>{{ getDate(item.meta.createdAt) }}</span>
             </el-col>
           </el-col>
         </el-col>
@@ -21,6 +21,7 @@
 </template>
 
 <script>
+const moment = require('moment');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'model-4',
@@ -36,6 +37,10 @@ export default {
     detail(id) {
       this.$router.push({ path: './list', query: { index: this.index, id } });
     },
+    getDate(date) {
+      let newDate = moment(date).format('YYYY-MM-DD');
+      if (newDate) return newDate;
+    },
   },
   computed: {
     ...mapState(['user']),

+ 86 - 0
src/views/market/list-model/model-5.vue

@@ -0,0 +1,86 @@
+<template>
+  <div id="model-4">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detail(item.id)">
+          <el-col :span="24" class="title textOver">
+            {{ item.name }}
+          </el-col>
+          <el-col :span="24" class="other">
+            <el-col :span="12" class="text textOver">
+              所属领域:<span>{{ item.filed }}</span>
+            </el-col>
+            <el-col :span="12" class="text textOver">
+              发布时间:<span>{{ item.release_time }}</span>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'model-4',
+  props: {
+    list: { type: Array, default: () => [] },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    detail(id) {
+      this.$router.push({ path: './list', query: { index: this.index, id } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    index() {
+      return parseInt(this.$route.query.index) || 0;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .list {
+    padding: 12px 10px;
+    border-bottom: 1px solid #ccc;
+    .title {
+      font-size: 16px;
+      margin: 0 0 5px 0;
+    }
+    .other {
+      .text {
+        font-size: 14px;
+        color: #666;
+        span {
+          color: #000;
+        }
+      }
+    }
+  }
+  .list:hover {
+    cursor: pointer;
+    .title {
+      color: #409eff;
+      font-weight: bold;
+    }
+  }
+}
+</style>

+ 6 - 10
src/views/market/list/jxxq.vue

@@ -14,25 +14,22 @@
 <script>
 const _ = require('lodash');
 import listPage from '@c/list/list-page.vue';
-const { newsColumn } = require('@common/dict/index');
 import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: news } = createNamespacedHelpers('news');
+const { mapActions: product } = createNamespacedHelpers('product');
 export default {
   name: 'jxxq',
   props: ['listModel'],
   components: {
     listPage,
-    model2: () => import('../list-model/model-2.vue'),
-    dmodel: () => import('../detail-model/model-2.vue'),
+    model4: () => import('../list-model/model-4.vue'),
+    dmodel: () => import('../detail-model/model-4.vue'),
   },
   data: function () {
     return {
-      // 栏目
-      column: newsColumn,
       // 列表
       list: [],
       total: 0,
-      pageSize: 4,
+      pageSize: 7,
       // 详情
       detail: {},
     };
@@ -41,10 +38,9 @@ export default {
     this.search();
   },
   methods: {
-    ...news(['query', 'fetch']),
+    ...product(['query', 'fetch']),
     async search({ skip = 0, limit = this.pageSize, ...info } = {}) {
-      info.column_name = this.column[this.listModel];
-      let res = await this.query({ skip, limit, ...info });
+      let res = await this.query({ skip, limit, type: 0, ...info });
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
         this.$set(this, `total`, res.total);