Переглянути джерело

Merge branch 'master' of http://git.cc-lotus.info/service-platform/web-website

wuhongyu 5 роки тому
батько
коміт
9de25f354d

+ 2 - 3
src/components/supermaket/supermarkettableDetail.vue

@@ -17,7 +17,7 @@
       <el-col :span="24" class="main">
         <div class="w_1200">
           <el-col :span="24" class="rightcont">
-            <tablelist></tablelist>
+            <tablelist :tableData="tableData" :total="total" v-on="$listeners"></tablelist>
           </el-col>
         </div>
       </el-col>
@@ -37,7 +37,6 @@ import menuInfo from '@/layout/index/menuInfo.vue';
 import foot from '@/layout/index/foot.vue';
 import fenlei from '@/layout/policy/fenlei.vue';
 import tablelist from '@/layout/supermarket/tablelist.vue';
-import detali from '@/layout/supermarket/detali.vue';
 export default {
   name: 'policy',
   props: {
@@ -46,7 +45,7 @@ export default {
     contentList: null, //内容
     total: null,
     display: { type: String, default: 'list' },
-    policyInfo: null,
+    tableData: null,
   },
   components: {
     top, //头部

+ 12 - 1
src/layout/enterprise/contextxx.vue

@@ -4,7 +4,7 @@
       <rooms :list="list" @toChat="toChat"></rooms>
     </template>
     <template v-else>
-      <chat :room="room"></chat>
+      <chat :room="room" @toRoom="view = 'room'"></chat>
     </template>
   </div>
 </template>
@@ -28,6 +28,9 @@ export default {
   created() {
     this.search();
   },
+  mounted() {
+    this.channel();
+  },
   methods: {
     ...mapActions(['query', 'fetch']),
     async search() {
@@ -41,6 +44,14 @@ export default {
         this.view = 'chat';
       }
     },
+    channel() {
+      this.$stomp({
+        [`/exchange/chat_message/${this.user.uid}`]: this.onMessage,
+      });
+    },
+    onMessage(message) {
+      console.log(message);
+    },
   },
   computed: {
     ...mapState(['user']),

+ 45 - 7
src/layout/enterprise/parts/chat.vue

@@ -1,15 +1,22 @@
 <template>
   <div id="chats">
     <el-row :span="24" class="chat">
+      <el-col :span="24" style="padding-bottom:5px">
+        <el-button size="mini" @click="$emit('toRoom')" icon="el-icon-arrow-left" type="primary">返回</el-button>
+      </el-col>
       <el-col :span="24" class="chatInfo" id="chatBorder" ref="chatBorder">
         <template v-for="(i, index) in talk">
-          <template v-if="isSender(i)">
-            <span :key="`senderTime${i.id}${index}`">[{{ i.send_time }}] {{ i.sender_name }}</span>
-            <span v-html="i.content" :key="`senderContent${i.id}${index}`"></span>
+          <template v-if="isSender(i, index)">
+            <el-col :span="24" class="senderTime" :key="`div${i.id}${index}`">
+              <span :key="`senderTime${i.id}${index}`">[{{ i.send_time }}] {{ i.sender_name }}</span>
+              <span v-html="i.content" :key="`senderContent${i.id}${index}`"></span>
+            </el-col>
           </template>
           <template v-else>
-            <span :key="`receverTime${i.id}${index}`">[{{ i.send_time }}] {{ i.receiver_name }}</span>
-            <span v-html="i.content" :key="`receverContent${i.id}${index}`"></span>
+            <el-col :span="24" class="receverTime" :key="`div${i.id}${index}`">
+              <span :key="`receverTime${i.id}${index}`"> {{ i.receiver_name }} [{{ i.send_time }}]</span>
+              <span v-html="i.content" :key="`receverContent${i.id}${index}`"></span>
+            </el-col>
           </template>
         </template>
       </el-col>
@@ -22,6 +29,7 @@
 </template>
 
 <script>
+import _ from 'lodash';
 import { mapState, createNamespacedHelpers } from 'vuex';
 import wangEditor from '@/components/wang-editor.vue';
 const { mapActions: personalChat } = createNamespacedHelpers('personalchat');
@@ -56,7 +64,7 @@ export default {
       if (this.content != '') {
         let obj = { personroom_id: this.room.id, content: this.content, sender_id: this.user.uid, sender_name: this.user.name, send_time: '13:00' };
         let keys = Object.keys(this.room);
-        let fres = keys.filter(f => this.room[f] == this.user.uid);
+        let fres = keys.find(f => this.room[f] == this.user.uid);
         obj.receiver_id = fres === 'buyer_id' ? this.room['seller_id'] : this.room['buyer_id'];
         obj.receiver_name = fres === 'buyer_id' ? this.room['seller_name'] : this.room['buyer_name'];
         let res = await this.create(obj);
@@ -87,6 +95,14 @@ export default {
         [`/exchange/person_chat/${this.room.id}_${this.user.uid}`]: this.onMessage,
       });
     },
+    onMessage(message) {
+      let body = _.get(message, 'body');
+      if (body) {
+        body = JSON.parse(body);
+        this.talk.push(body);
+        this.turnBottom();
+      }
+    },
   },
   watch: {
     room: {
@@ -110,10 +126,14 @@ export default {
 </script>
 
 <style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
 .chat {
   float: left;
   width: 100%;
-  padding: 30px;
+  padding: 20px;
 }
 .chat .chatInfo {
   float: left;
@@ -133,4 +153,22 @@ export default {
   padding: 10px 80px;
   font-size: 20px;
 }
+.senderTime {
+  float: left;
+  width: 100%;
+}
+.receverTime {
+  float: right;
+  width: 100%;
+}
+.receverTime span:first-child {
+  float: right;
+  width: 100%;
+  text-align: right;
+}
+.receverTime span:last-child {
+  float: right;
+  width: 100%;
+  text-align: right;
+}
 </style>

+ 7 - 3
src/layout/supermarket/jiaoyi.vue

@@ -5,7 +5,7 @@
         <el-col :span="24" class="topInfo">
           <el-col :span="23" class="left">{{ title }}</el-col>
           <el-col :span="1" class="more">
-            <el-link :underline="false" @click.native="clickmore(scoped.row.id)"><el-image :src="more"></el-image></el-link>
+            <el-link :underline="false" @click="clickmore()"><el-image :src="more"></el-image></el-link>
           </el-col>
         </el-col>
         <el-col :span="24" class="list">
@@ -49,8 +49,8 @@ export default {
   created() {},
   computed: {},
   methods: {
-    clickmore(id) {
-      this.$router.push({ path: '/supermaket/supermarketlists' });
+    clickmore() {
+      this.$router.push({ path: '/supermaket/supermarkelists' });
     },
   },
 };
@@ -90,4 +90,8 @@ export default {
   overflow: hidden;
   white-space: nowrap;
 }
+.list {
+  height: 200px;
+  overflow: hidden;
+}
 </style>

+ 90 - 5
src/layout/supermarket/tablelist.vue

@@ -1,19 +1,104 @@
 <template>
   <div id="tablelist">
-    <p>tablelist</p>
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="infoTop">
+          <span>交易展示</span>
+        </el-col>
+        <el-col :span="24" class="tableInfo">
+          <el-table :data="tableData" style="width: 100%" stripe border>
+            <el-table-column prop="market_username" label="营销单位" align="center" :show-overflow-tooltip="true"> </el-table-column>
+            <el-table-column prop="username" label="采购单位" align="center" :show-overflow-tooltip="true"> </el-table-column>
+            <el-table-column prop="product_name" label="产品交易" align="center" :show-overflow-tooltip="true"> </el-table-column>
+            <el-table-column prop="state" label="状态" align="center">
+              <template v-slot="scoped">
+                {{
+                  `${scoped.row.status}` === `0`
+                    ? '未交易'
+                    : `${scoped.row.status}` === `1`
+                    ? '交易中'
+                    : `${scoped.row.status}` === `2`
+                    ? '交易成功'
+                    : `${scoped.row.status}` === `3`
+                    ? '交易失败'
+                    : ''
+                }}
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+        <el-col :span="24" class="page">
+          <el-pagination
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-size="10"
+            layout="total, prev, pager, next, jumper"
+            :total="total"
+          >
+          </el-pagination>
+        </el-col>
+      </el-col>
+    </el-row>
   </div>
 </template>
 
 <script>
 export default {
   name: 'tablelist',
-  props: {},
+  props: {
+    tableData: null,
+    total: null,
+  },
   components: {},
-  data: () => ({}),
+  data: () => ({
+    currentPage: 1,
+  }),
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    handleCurrentChange(val) {
+      console.log(`当前页: ${val}`);
+      this.$emit('query', val);
+    },
+  },
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.infoTop {
+  height: 60px;
+  border-bottom: 1px solid #22529a;
+  margin: 0 0 30px 0;
+}
+.infoTop span:only-child {
+  width: 15%;
+  height: 60px;
+  background-color: #22529a;
+  color: #fff;
+  text-align: center;
+  line-height: 60px;
+  font-size: 20px;
+  display: block;
+}
+.tableInfo {
+  margin: 0 auto;
+  width: 90%;
+  float: none;
+  height: 630px;
+}
+/deep/.el-table th {
+  background-color: #f3f3f3;
+  color: rgba(1, 1, 1, 0.5);
+  font-size: 18px;
+  text-align: center;
+}
+/deep/.el-table td {
+  color: rgba(1, 1, 1, 0.7);
+  font-size: 18px;
+  text-align: center;
+}
+.page {
+  margin: 20px 0;
+  text-align: center;
+}
+</style>

+ 118 - 118
src/router/index.js

@@ -94,248 +94,248 @@ const live = [
 
 const routes = [
   {
-    path: "/",
-    name: "index",
-    component: () => import("../views/index.vue"),
+    path: '/',
+    name: 'index',
+    component: () => import('../views/index.vue'),
   },
   // 科技政务
   {
-    path: "/government/government",
-    name: "government",
-    component: () => import("../views/government/government.vue"),
+    path: '/government/government',
+    name: 'government',
+    component: () => import('../views/government/government.vue'),
   },
   // 科技政务-列表
   {
-    path: "/government/governmentList",
-    name: "governmentList",
-    component: () => import("../views/government/governmentList.vue"),
+    path: '/government/governmentList',
+    name: 'governmentList',
+    component: () => import('../views/government/governmentList.vue'),
   },
 
   // 科技政务-详情
   {
-    path: "/government/governmentDetail",
-    name: "governmentDetail",
-    component: () => import("../views/government/governmentDetail.vue"),
+    path: '/government/governmentDetail',
+    name: 'governmentDetail',
+    component: () => import('../views/government/governmentDetail.vue'),
   },
   // 科技政策
   {
-    path: "/policy/policy",
-    name: "policy",
-    component: () => import("../views/policy/policy.vue"),
+    path: '/policy/policy',
+    name: 'policy',
+    component: () => import('../views/policy/policy.vue'),
   },
   // 首页政策法规详情(所属科技政策,综合政策指导)
   {
-    path: "/policy/lawDetail",
-    name: "lawDetail",
-    component: () => import("../views/policy/lawDetail.vue"),
+    path: '/policy/lawDetail',
+    name: 'lawDetail',
+    component: () => import('../views/policy/lawDetail.vue'),
   },
   // 科技超市
   {
-    path: "/supermaket/supermarket",
-    name: "supermarket",
-    component: () => import("../views/supermaket/supermarket.vue"),
+    path: '/supermaket/supermarket',
+    name: 'supermarket',
+    component: () => import('../views/supermaket/supermarket.vue'),
   },
 
   // 科技超市产品列表
   {
-    path: "/supermaket/supermarketlist",
-    name: "supermarketlist",
-    component: () => import("../views/supermaket/supermarketlist.vue"),
+    path: '/supermaket/supermarketlist',
+    name: 'supermarketlist',
+    component: () => import('../views/supermaket/supermarketlist.vue'),
   },
   // 科技超市-高校院所
   {
-    path: "/supermaket/supermarketColleges",
-    name: "supermarketColleges",
-    component: () => import("../views/supermaket/supermarketColleges.vue"),
+    path: '/supermaket/supermarketColleges',
+    name: 'supermarketColleges',
+    component: () => import('../views/supermaket/supermarketColleges.vue'),
   },
   // 科技超市-科研院所
   {
-    path: "/supermaket/supermarketScientific",
-    name: "supermarketSientific",
-    component: () => import("../views/supermaket/supermarketScientific.vue"),
+    path: '/supermaket/supermarketScientific',
+    name: 'supermarketSientific',
+    component: () => import('../views/supermaket/supermarketScientific.vue'),
   },
   // 科技超市-科技企业
   {
-    path: "/supermaket/supermarketEnterprise",
-    name: "supermarketEnterprise",
-    component: () => import("../views/supermaket/supermarketEnterprise.vue"),
+    path: '/supermaket/supermarketEnterprise',
+    name: 'supermarketEnterprise',
+    component: () => import('../views/supermaket/supermarketEnterprise.vue'),
   },
   // 科技超市-机构团体
   {
-    path: "/supermaket/supermarketGroup",
-    name: "supermarketGroup",
-    component: () => import("../views/supermaket/supermarketGroup.vue"),
+    path: '/supermaket/supermarketGroup',
+    name: 'supermarketGroup',
+    component: () => import('../views/supermaket/supermarketGroup.vue'),
   },
   //xiangping
   {
-    path: "/supermaket/supermarketdetail",
-    name: "supermarketdetail",
-    component: () => import("../views/supermaket/supermarketdetail.vue"),
+    path: '/supermaket/supermarketdetail',
+    name: 'supermarketdetail',
+    component: () => import('../views/supermaket/supermarketdetail.vue'),
   },
 
   // 科技超市-研发服务
   {
-    path: "/supermaket/supermaketService",
-    name: "supermaketService",
-    component: () => import("../views/supermaket/supermaketService.vue"),
+    path: '/supermaket/supermaketService',
+    name: 'supermaketService',
+    component: () => import('../views/supermaket/supermaketService.vue'),
   },
   //科技超市-技术成果
   {
-    path: "/supermaket/supermakettechnology",
-    name: "supermakettechnology",
-    component: () => import("../views/supermaket/supermakettechnology.vue"),
+    path: '/supermaket/supermakettechnology',
+    name: 'supermakettechnology',
+    component: () => import('../views/supermaket/supermakettechnology.vue'),
   },
   // 科技超市-创新产品
   {
-    path: "/supermaket/supermarketProduct",
-    name: "supermarketProduct",
-    component: () => import("../views/supermaket/supermarketProduct.vue"),
+    path: '/supermaket/supermarketProduct',
+    name: 'supermarketProduct',
+    component: () => import('../views/supermaket/supermarketProduct.vue'),
   },
 
   //科技超市列表
   {
-    path: "/supermaket/supermarkelists",
-    name: "supermarketuct",
-    component: () => import("../views/supermaket/supermarkelists.vue"),
+    path: '/supermaket/supermarkelists',
+    name: 'supermarketuct',
+    component: () => import('../views/supermaket/supermarkelists.vue'),
   },
 
   // 科技超市-咨询服务
   {
-    path: "/supermaket/supermarketinnovate",
-    name: "supermarketinnovate",
-    component: () => import("../views/supermaket/supermarketinnovate.vue"),
+    path: '/supermaket/supermarketinnovate',
+    name: 'supermarketinnovate',
+    component: () => import('../views/supermaket/supermarketinnovate.vue'),
   },
   //科技数据
   {
-    path: "/shuju/shuju",
-    name: "shuju",
-    component: () => import("../views/shuju/shuju.vue"),
+    path: '/shuju/shuju',
+    name: 'shuju',
+    component: () => import('../views/shuju/shuju.vue'),
   },
   {
-    path: "/shuju/shujulist",
-    name: "shujulist",
-    component: () => import("../views/shuju/shujulist.vue"),
+    path: '/shuju/shujulist',
+    name: 'shujulist',
+    component: () => import('../views/shuju/shujulist.vue'),
   },
   {
-    path: "/shuju/shujudetail",
-    name: "shujudetail",
-    component: () => import("../views/shuju/shujudetail.vue"),
+    path: '/shuju/shujudetail',
+    name: 'shujudetail',
+    component: () => import('../views/shuju/shujudetail.vue'),
   },
   //科技服务
   {
-    path: "/service/service",
-    name: "service",
-    component: () => import("../views/service/service.vue"),
+    path: '/service/service',
+    name: 'service',
+    component: () => import('../views/service/service.vue'),
   },
   {
-    path: "/service/servicelist",
-    name: "servicelist",
-    component: () => import("../views/service/servicelist.vue"),
+    path: '/service/servicelist',
+    name: 'servicelist',
+    component: () => import('../views/service/servicelist.vue'),
   },
   {
-    path: "/service/servicedetail",
-    name: " servicedetail",
-    component: () => import("../views/service/servicedetail.vue"),
+    path: '/service/servicedetail',
+    name: ' servicedetail',
+    component: () => import('../views/service/servicedetail.vue'),
   },
   // 科技资源
   {
-    path: "/resource/resource",
-    name: "service",
-    component: () => import("../views/resource/resource.vue"),
+    path: '/resource/resource',
+    name: 'service',
+    component: () => import('../views/resource/resource.vue'),
   },
   //登录和注册
   {
-    path: "/login",
-    meta: { title: "用户" },
-    component: () => import("../views/login.vue"),
+    path: '/login',
+    meta: { title: '用户' },
+    component: () => import('../views/login.vue'),
   },
   //科技人才
   {
-    path: "/personnel/personnel",
-    name: "personnel",
-    component: () => import("../views/personnel/personnel.vue"),
+    path: '/personnel/personnel',
+    name: 'personnel',
+    component: () => import('../views/personnel/personnel.vue'),
   },
   //科技人才投简历详情
   {
-    path: "/personnel/rencai",
-    component: () => import("../views/personnel/rencai.vue"),
+    path: '/personnel/rencai',
+    component: () => import('../views/personnel/rencai.vue'),
   },
   //科技人才找工作详情
   {
-    path: "/personnel/personnelwork",
-    name: "personnelwork",
-    component: () => import("../views/personnel/personnelwork.vue"),
+    path: '/personnel/personnelwork',
+    name: 'personnelwork',
+    component: () => import('../views/personnel/personnelwork.vue'),
   },
   //科技人才找专家详情
   {
-    path: "/personnel/personnelexpert",
-    component: () => import("../views/personnel/personnelexpert.vue"),
+    path: '/personnel/personnelexpert',
+    component: () => import('../views/personnel/personnelexpert.vue'),
   },
   // 科技人才找参谋详情
   {
-    path: "/personnel/personnelcmdetail",
-    component: () => import("../views/personnel/personnelcmdetail.vue"),
+    path: '/personnel/personnelcmdetail',
+    component: () => import('../views/personnel/personnelcmdetail.vue'),
   },
   // 科技人才找招聘信息
   {
-    path: "/personnel/recruitList",
-    component: () => import("../views/personnel/recruitList.vue"),
+    path: '/personnel/recruitList',
+    component: () => import('../views/personnel/recruitList.vue'),
   },
   // 科技人才-就业指导
   {
-    path: "/personnel/guidanceList",
-    component: () => import("../views/personnel/guidanceList.vue"),
+    path: '/personnel/guidanceList',
+    component: () => import('../views/personnel/guidanceList.vue'),
   },
   // 科技人才-学习实践
   {
-    path: "/personnel/practiceList",
-    component: () => import("../views/personnel/practiceList.vue"),
+    path: '/personnel/practiceList',
+    component: () => import('../views/personnel/practiceList.vue'),
   },
   // 科技人才-勤工俭学
   {
-    path: "/personnel/diligenceList",
-    component: () => import("../views/personnel/diligenceList.vue"),
+    path: '/personnel/diligenceList',
+    component: () => import('../views/personnel/diligenceList.vue'),
   },
   // 科技人才-工作顾问
   {
-    path: "/personnel/adviserList",
-    component: () => import("../views/personnel/adviserList.vue"),
+    path: '/personnel/adviserList',
+    component: () => import('../views/personnel/adviserList.vue'),
   },
   //企业-基本信息
   {
-    path: "/enterprise/enterprisejb",
-    name: "enterprisefabu",
-    component: () => import("../views/enterprise/enterprisejb.vue"),
+    path: '/enterprise/enterprisejb',
+    name: 'enterprisefabu',
+    component: () => import('../views/enterprise/enterprisejb.vue'),
   },
   //企业-信息管理
   {
-    path: "/enterprise/enterprisexx",
-    name: "enterprisexuqiu",
-    component: () => import("../views/enterprise/enterprisexx.vue"),
+    path: '/enterprise/enterprisexx',
+    name: 'enterprisexuqiu',
+    component: () => import('../views/enterprise/enterprisexx.vue'),
   },
   //企业-发布信息列表
   {
-    path: "/enterprise/enterprisefabu",
-    name: "enterprisefabu",
-    component: () => import("../views/enterprise/enterprisefabu.vue"),
+    path: '/enterprise/enterprisefabu',
+    name: 'enterprisefabu',
+    component: () => import('../views/enterprise/enterprisefabu.vue'),
   },
   // 企业-需求发布
   {
-    path: "/enterprise/enterprisexuqiu",
-    name: "enterprisexuqiu",
-    component: () => import("../views/enterprise/enterprisexuqiu.vue"),
+    path: '/enterprise/enterprisexuqiu',
+    name: 'enterprisexuqiu',
+    component: () => import('../views/enterprise/enterprisexuqiu.vue'),
   },
   //企业-订购
   {
-    path: "/enterprise/enterprisedg",
-    name: "enterprisedg",
-    component: () => import("../views/enterprise/enterprisedg.vue"),
+    path: '/enterprise/enterprisedg',
+    name: 'enterprisedg',
+    component: () => import('../views/enterprise/enterprisedg.vue'),
   },
   // 外审管理员
   {
-    path: "/trial/index",
-    name: "trial",
-    component: () => import("../views/trial/index.vue"),
+    path: '/trial/index',
+    name: 'trial',
+    component: () => import('../views/trial/index.vue'),
   },
   // ...live,
 ];

+ 16 - 1
src/views/supermaket/supermarkelists.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="policy">
-    <supermarkettable-detail :info="info"></supermarkettable-detail>
+    <supermarkettable-detail :tableData="tableData" :total="total" :info="info" @query="query"></supermarkettable-detail>
   </div>
 </template>
 
@@ -9,6 +9,7 @@ import supermarkettableDetail from '@/components/supermaket/supermarkettableDeta
 import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
 import _ from 'loadsh';
 const { mapActions: mapSite } = createNamespacedHelpers('site');
+const { mapActions: transaction } = createNamespacedHelpers('transaction');
 export default {
   name: 'policy',
   props: {},
@@ -23,9 +24,12 @@ export default {
     contentList: [],
     total: 1,
     skip: '',
+    limit: 10,
+    tableData: [],
   }),
   async created() {
     this.searchSite();
+    this.jiaoyilist();
   },
   computed: {
     totaltype() {
@@ -34,6 +38,7 @@ export default {
   },
   methods: {
     ...mapSite(['showInfo']),
+    ...transaction({ transactionQuery: 'query', ProductFetch: 'fetch', ProductDelete: 'delete' }),
 
     // 查询站点信息
     async searchSite() {
@@ -45,6 +50,16 @@ export default {
         this.$message.error(res.errmsg ? res.errmsg : 'error');
       }
     },
+    async jiaoyilist({ skip = 0, limit = 10 } = {}) {
+      const res = await this.transactionQuery({ skip, limit });
+      this.$set(this, `tableData`, res.data);
+      this.$set(this, `total`, res.total);
+    },
+    async query(val) {
+      console.log(val);
+
+      this.jiaoyilist({ skip: (val - 1) * this.limit, limit: this.limit });
+    },
   },
 };
 </script>

+ 1 - 0
src/views/supermaket/supermarketlist.vue

@@ -37,6 +37,7 @@ export default {
     contentList: [],
     total: 1,
     skip: '',
+    tableData: {},
   }),
   async created() {
     this.searchSite();