浏览代码

Merge branch 'product' of http://1.116.113.26:8088/zhuliu/xiaoshi_system into product

zhuhao 1 年之前
父节点
当前提交
9ce9c704be

+ 17 - 0
package-lock.json

@@ -4810,6 +4810,23 @@
       "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=",
       "dev": true
     },
+    "el-table-infinite-scroll": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/el-table-infinite-scroll/-/el-table-infinite-scroll-1.0.0.tgz",
+      "integrity": "sha512-0zOZ2LXE9h0TwmMcsh2TMhuO5oHDBzLjeKjsYp8Q0bFE/El1aHesy538Keq9wK/Rp718LNUyXvabC0mE6MQoUA==",
+      "requires": {
+        "core-js": "^2.6.5",
+        "element-ui": "^2.12.0",
+        "vue": "^2.6.10"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.6.12",
+          "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+          "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
+        }
+      }
+    },
     "electron-to-chromium": {
       "version": "1.3.889",
       "resolved": "https://registry.npmmirror.com/electron-to-chromium/download/electron-to-chromium-1.3.889.tgz",

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "core-js": "^3.6.5",
     "driver.js": "^1.3.0",
     "echarts": "^5.2.2",
+    "el-table-infinite-scroll": "^1.0.0",
     "element-ui": "^2.15.7",
     "flowchart-vue": "^0.30.0",
     "html2canvas": "^1.3.3",

二进制
src/assets/logo-3.png


二进制
src/assets/logo-4.png


二进制
src/assets/lun1.jpg


+ 5 - 0
src/main.js

@@ -47,9 +47,14 @@ Vue.prototype.$cookie = Cookies
 import commonJS from '@/utils/common.js'
 Vue.prototype.$commonJS = commonJS
 
+//挂载在窗体上的事件
 import vmFunction from './utils/window'
 Vue.use(vmFunction)
 
+//el-table滚动加载
+import elTableInfiniteScroll from 'el-table-infinite-scroll'
+Vue.use(elTableInfiniteScroll)
+
 Vue.config.productionTip = false
 Vue.prototype.$constants = constants//公用数据
 Vue.prototype.$api = api

+ 69 - 90
src/utils/model/route.vue

@@ -1,104 +1,83 @@
 <template>
-  <div style="background:white;height:700px">
-    
+  <div>
+    <el-table :data="tableData" v-el-table-infinite-scroll="load" height="300px">
+      <el-table-column prop="date" label="日期" width="180"></el-table-column>
+      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
+      <el-table-column prop="address" label="地址"></el-table-column>
+    </el-table>
 
-    <el-row :gutter="24">
-        <el-col :span="6" v-for="item in data" class="c">
-          <myCard shadow="always">
-            <div slot="head">
-              <div>{{ item.title }}</div>
-              <div>
-                <el-dropdown class="float_right" @command="handleCommand($event, item)" trigger="click" size="small">
-                <span class="el-dropdown-link">
-                  <i class="el-icon-more el-icon--right"></i>
-                </span>
-                <el-dropdown-menu slot="dropdown" class="text-align_center">
-                  <el-dropdown-item command="e" >
-                    <span v-if="$permission('/workspace/project/modify') && ($r(item.id,[2])||userinfo.id == item.createBy)">编辑</span>
-                    <span v-else>查看</span>
-                  </el-dropdown-item>
-                  <el-dropdown-item command="0" :disabled="!($permission('/workspace/project/patent_import')&& $r(item.id,[1,2]))">
-                    <el-dropdown @command="handleCommand($event, item)" placement="right-start">
-                      <span class="el-dropdown-link"> 专利导入 </span>
-                      <el-dropdown-menu  class="children_item">
-                          <el-dropdown-item command="7"> Excel导入 </el-dropdown-item>
-                          <el-dropdown-item command="8">专利号导入 </el-dropdown-item>
-                          <el-dropdown-item command="11" v-if="$permission('/workspace/common/retrieval')"> 检索条件导入 </el-dropdown-item>
-                      </el-dropdown-menu>
-                    </el-dropdown>
-                  </el-dropdown-item>
-                  <el-dropdown-item command="12">任务清单</el-dropdown-item>
-                <el-dropdown-item command="1">分配参与者</el-dropdown-item>
-                <el-dropdown-item command="2" :disabled="!$permission('/workspace/project/report_manage')">报告管理</el-dropdown-item>
-                <el-dropdown-item command="6" v-if="item.isCategory == 1&& $permission('/workspace/product')">产品架构</el-dropdown-item>
-                <el-dropdown-item command="10" v-if="$permission('/workspace/event')">事 件</el-dropdown-item>
-                <el-dropdown-item command="5" :disabled="!$permission('/workspace/project/other_accessories')">其它附件</el-dropdown-item>
-                <el-dropdown-item command="3" :disabled="!($permission('/workspace/project/project_share')&&$r(item.id,[2]))">项目分享</el-dropdown-item>
-                <el-dropdown-item command="4" divided class="color-red" :disabled="!($permission('/workspace/project/modify') && ($r(item.id,[2])||userinfo.id == item.createBy))">删除</el-dropdown-item>
-                </el-dropdown-menu>
-              </el-dropdown>
-              </div>
-            </div>
-            <div>
-              <p>名称:{{ item.name }}</p>
-            </div>
-            <div slot="foot">
-              <i class="el-icon-delete"></i>
-            </div>
-          </myCard>
-        </el-col>
-      </el-row>
+    <el-alert v-if="isflag" title="正在努力加载中..." type="success" center :closable="false" show-icon></el-alert>
+    <el-alert v-if="isMore" title="没有更多啦!" type="warning" center show-icon></el-alert>
   </div>
 </template>
-
 <script>
-import help from '@/views/layout/components/help.vue'
 export default {
-  components: {
-    help
-  },
-  props: {},
   data() {
     return {
-        show:false,
-        data:[
-          {
-            title:'标题',
-            name:'名称'
-          },
-          {
-            title:'标题2',
-            name:'名称2'
-          },
-        ]
+      isflag: false,
+      isMore: false,
+      tableData: [
+        {
+          date: "2016-05-03",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-02",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-04",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-03",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-02",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-04",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-03",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-02",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        },
+        {
+          date: "2016-05-04",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄"
+        }
+      ]
     };
   },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
   methods: {
-    mouseup(e){
-        console.log(this.show)
-        e.preventDefault();
-        this.show = !this.show
-        this.$store.commit("SET_CONTEXT_MENU", 
-        {
-            clientX: e.clientX, // left
-            clientY: e.clientY,
-            displayContextMenu: this.show, 
-        }
-        )
-        // document.onclick=()=>{
-        //     this.$store.commit("SET_CONTEXT_MENU", 
-        //         {
-        //             displayContextMenu: false, 
-        //         }
-        //     )
-        // }
+    load() {
+      this.isMore = false;
+      this.isflag = true;
+      if (this.isflag) {
+        this.tableData = this.tableData.concat(this.tableData);
+        setTimeout(()=>{
+        this.isflag = false      
+        console.log(this.isflag)      
+        },1000)
+        
+      }
     }
-  },
+  }
 };
 </script>
-<style lang="scss" scoped>
-</style>

+ 76 - 0
src/views/components/dialog/fields.vue

@@ -0,0 +1,76 @@
+<template>
+  <div>
+    <el-dialog
+        title="提示"
+        :visible.sync="dialogVisible"
+        width="50%"
+        :before-close="handleClose">
+        <div>
+            <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
+            <div style="margin: 15px 0;"></div>
+            <el-checkbox-group v-model="checked" @change="handleCheckedChange">
+                <el-checkbox v-for="field in filedList" :label="field.value" :key="field.value">{{field.name}}</el-checkbox>
+            </el-checkbox-group>
+        </div>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="handleClose">取 消</el-button>
+            <el-button type="primary" @click="submit">确 定</el-button>
+        </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {
+    filedList:{
+        type:Array,
+        default:[]
+    }
+  },
+  data() {
+    return {
+        //控制显示弹窗
+        dialogVisible:false,
+        //是否全选
+        isIndeterminate:false,
+        //全选
+        checkAll:false,
+        //选择
+        checked:[],
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    //打开栏位
+    open(data){
+        this.dialogVisible = true
+    },
+    //关闭弹窗
+    handleClose(){
+        this.dialogVisible = false
+    },
+    //提交更改
+    submit(){
+
+    },
+    //全选
+    handleCheckAllChange(val) {
+        this.checked = val ? this.filedList : [];
+        this.isIndeterminate = false;
+    },
+    //勾选
+    handleCheckedChange(value){
+        let checkedCount =  value.length;
+        this.checkAll = checkedCount === this.filedList.length;
+        this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 22 - 10
src/views/event/components/index.vue

@@ -19,15 +19,14 @@
             <el-button :type="viewSelected === 'Table' ? 'primary' : ''" @click="onChange2('Table')" size="small">列表</el-button>
             <el-button :type="viewSelected === 'Card' ? 'primary' : ''" @click="onChange2('Card')" size="small">卡片</el-button>
           </el-button-group>
-          <el-button type="primary" size="small" style="margin: 0 10px;" @click="handleCommand('1')">添加事件</el-button>
-          <!-- <el-dropdown trigger="click" split-button type="primary" size="small" @command="handleCommand($event)">
-            <P @click="handleCommand('1')">添加事件</P>
+          <!-- <el-button type="primary" size="small" style="margin: 0 10px;" @click="handleCommand('1')">添加事件</el-button> -->
+          <el-dropdown trigger="click" split-button type="primary" size="small" @command="handleCommand($event)">
+            <span @click="handleCommand('1')">添加事件</span>
             <el-dropdown-menu slot="dropdown" class="text-align_center">
-              <el-dropdown-item command="1">添加事件</el-dropdown-item>
-              <el-dropdown-item command="2">批量添加事件</el-dropdown-item>
-              <el-dropdown-item command="2">批量添加事件</el-dropdown-item>
+              <el-dropdown-item command="3">显示栏位管理</el-dropdown-item>
+              <!-- <el-dropdown-item command="2">批量添加事件</el-dropdown-item> -->
             </el-dropdown-menu>
-          </el-dropdown> -->
+          </el-dropdown>
         </div>
       </el-header>
       <el-main id="patent-list-container" class="main" v-loading="loading">
@@ -67,6 +66,7 @@
     </el-container>
 
     <addEvent ref="addEvent"  @isSuccess="handleSuccess"></addEvent>
+    <fields ref="field"></fields>
   </div>
 </template>
 
@@ -75,12 +75,14 @@ import Table from './view/table.vue'
 import Card from './view/card.vue'
 import mergeTable from './view/mergeTable.vue';
 import addEvent from './dialog/addEvent.vue';
+import fields from '@/views/components/dialog/fields.vue';
 export default {
   components: {
     Table,
     Card,
     mergeTable,
-    addEvent
+    addEvent,
+    fields
   },
   props: {
     eventName:'',
@@ -122,7 +124,9 @@ export default {
       //显示视图
       showView: false,
       //场景
-      scene: [],
+      scene:[],
+      //表格全部栏位
+      fieldList:[],
     };
   },
   watch: {},
@@ -277,7 +281,15 @@ export default {
 
     //新增事件的选项(1是添加单个事件,2是批量添加)
     handleCommand(e) {
-      this.$refs.addEvent.open(null, e)
+      switch(e){
+        case '1'://添加单个事件
+          this.$refs.addEvent.open(null, e)
+          break;
+        case '3'://显示栏位管理
+          this.$refs.field.open(this.fieldList)
+          break;
+      }
+      
     },
 
     //获取排序字段// 子组件table排序

+ 18 - 3
src/views/event/components/view/table.vue

@@ -1,6 +1,9 @@
 <template>
   <div class="eventTable height_100">
-    <el-table :data="tableData" header-row-class-name="custom-table-header" @sort-change="sortChange">
+    <el-table :data="tableData" header-row-class-name="custom-table-header" @sort-change="sortChange"
+    :infinite-scroll-distance="10"
+      :infinite-scroll-disabled="disabled"
+      :height="row?300:auto">
       <el-table-column label="#" width="60" type="index" align="center">
         <template slot-scope="scope">
           <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
@@ -38,6 +41,9 @@
           </template>
         </el-table-column>
       </el-table>
+
+      <el-alert v-if="isflag" title="正在努力加载中..." type="success" center :closable="false" show-icon></el-alert>
+      <el-alert v-if="isMore" title="没有更多啦!" type="warning" center show-icon></el-alert>
   </div>
 </template>
 
@@ -102,14 +108,23 @@ export default {
   },
   data() {
     return {
-
+      //正在努力加载中
+      isflag:false,
+      //没有更多啦!
+      isMore:false,
+      //禁用懒加载
+      disabled:true,
     };
   },
   watch: {
 
   },
   mounted() {
-  
+    if(!this.row){
+      this.disabled = true
+    }else{
+      this.getList()
+    }
   },
   methods: {
     // 排序

+ 4 - 3
src/views/home/components/carousel.vue

@@ -1,7 +1,7 @@
 <template>
-  <div>
-    <el-carousel :interval="4000" type="card">
-      <el-carousel-item v-for="item in srcList" :key="item.src">
+  <div class="height_100">
+    <el-carousel :interval="4000" height="450px">
+      <el-carousel-item v-for="item in srcList" :key="item.src" >
         <el-image :src="require('@/assets/' + item.src)" class="medium"></el-image>
       </el-carousel-item>
     </el-carousel>
@@ -32,5 +32,6 @@ export default {
   .medium {
     width: 100%;
     height: 100%;
+    object-fit: cover;
   }
 </style>

+ 20 - 14
src/views/home/index.vue

@@ -4,9 +4,9 @@
       <div class="carousel" id="step1">
         <carousel></carousel>
       </div>
-      <div class="title">
+      <!-- <div class="title">
         <h2>知识产权风控与组织记忆系统</h2>
-      </div>
+      </div> -->
       <div class="home_search">
         <div class="input_search" id="step2">
           <el-input :placeholder="getPlaceholder()" v-model="queryParams.content" class="input-with-select">
@@ -25,7 +25,7 @@
       <div class="footerDiv">
         <div>
           <div class="logo">
-            <img class="img" src="@/assets/logo-3.png" />
+            <img class="img" src="@/assets/logo-4.png" />
             <span class="title">知识产权风控与组织记忆系统</span>
           </div>
           <div class="bei">
@@ -102,7 +102,7 @@ export default {
       ],
       queryParams: {
         content: '',
-        select: ''
+        select: 'Workspace'
       },
     }
   },
@@ -133,23 +133,27 @@ export default {
 
   .input_search {
     .el-input-group__append, .el-input-group__prepend{
-      background: var(--bg);
+      background: white;
     }
     // select中选中项颜色、上下角颜色改变
     .el-select .el-input .el-select__caret{
-      color:var(--color) !important;
+      color:var(--color2) !important;
+      
     }
     .el-input-group__prepend div.el-select .el-input__inner{
-      color: var(--color) !important;
+      color: var(--color2) !important;
+      font-weight: bold;
     }
     .el-select .el-input__inner::-webkit-input-placeholder{
       color: var(--ph) !important;
     }
 
     .el-button {
+      // all: initial !important;
       border-radius: 0px;
-      background: var(--bg);
-      border: 1px solid var(--bg);
+      width: 50px;
+      background: rgba(79,166,255);
+      border: 1px solid rgba(79,166,255);
       color: var(--color) !important;
     }
   }
@@ -161,12 +165,12 @@ export default {
   --minHeight:150px;
   --marginTop:50px;
   .main {
-    width: 80%;
+    width: 85%;
     margin: 0 auto;
     position: relative;
     min-height: calc(100% - var(--minHeight) - var(--marginTop));
     .carousel{
-      padding-top: 10px;
+      // padding-top: 10px;
     }
 
     .title {
@@ -177,9 +181,11 @@ export default {
 
     .home_search {
       width: 100%;
-      background: white;
+      background: var(--bg);
       z-index: 999;
-      margin: 20px auto;
+      margin: 0 auto 20px;
+      height: 80px;
+      line-height: 80px;
       padding: 10px 0;
       position: sticky;
       top: 0;
@@ -254,7 +260,7 @@ export default {
         .img {
           height: 20px;
           margin-right: 20px;
-         background: #fff;
+        //  background: #fff;
         }
       }
 

+ 7 - 22
src/views/product/components/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="product">
+  <div class="height_100">
     <el-container>
       <el-header>
         <div>
@@ -14,12 +14,7 @@
               </el-option>
             </el-select>
           </div>
-          <!-- <el-button-group style=" display: flex; justify-content: flex-start; margin-left: 10px;">
-            <el-button size="small" :type="viewSelected === 'visual' ? 'primary' : ''" @click="onChange2('visual')">可视化</el-button>
-            <el-button :type="viewSelected === 'Table' ? 'primary' : ''" @click="onChange2('Table')" size="small">列表</el-button>
-            <el-button :type="viewSelected === 'Card' ? 'primary' : ''" @click="onChange2('Card')" size="small">卡片</el-button>
-          </el-button-group> -->
-          <div  style="margin:0 10px;">
+          <div style="margin:0 10px;">
             <el-dropdown trigger="click" split-button type="primary" size="small" >
               <span @click="handleCommand('0')">新增类别</span>
               <el-dropdown-menu slot="dropdown" class="text-align_center">
@@ -38,11 +33,11 @@
         </div>
       </el-header>
       <el-main>
-        <div style="height: 100%;margin-bottom: 30px;">
-          <component :is="componentType" :tableData="tableData" :queryParams="queryParams" @options="handleOption" @expand="handleExpand"></component>
+        <div style="height: 100%;">
+          <component :is="componentType" :tableData="tableData" :queryParams="queryParams" @options="handleOption"></component>
         </div>
       </el-main>
-      <el-footer class="footer">
+      <el-footer class="pagination">
         <el-pagination background layout="total, sizes, prev, pager, next, jumper"
           :current-page.sync="queryParams.current" :page-size.sync="queryParams.size"
           @current-change="handleCurrentChange" @size-change="getList()" :total="total">
@@ -152,10 +147,7 @@ export default {
 
   },
   methods: {
-    // 子组件展开行展开、关闭
-    handleExpand({ row, rowList }) {
-      // console.log(row,rowList);
-    },
+
     // 子组件编辑等事件
     handleOption({ val, row }) {
       switch (val) {
@@ -200,12 +192,5 @@ export default {
 }
 </style>
 <style lang="scss" scoped>
-.product{
-  .footer{
-    width: 100%;
-    position: fixed;
-    bottom: 0px;
-    z-index: 1;
-  }
-}
+
 </style>

+ 169 - 54
src/views/product/components/view/categoryTable.vue

@@ -4,16 +4,9 @@
     <el-table :data="tableData" style="width: 100%" header-row-class-name="custom-table-header" row-key="id" @expand-change="handleExpand">
       <el-table-column type="expand">
         <!-- 产品 -->
-        <template>
+        <template slot-scope="scope">
           <div style="padding: 10px;">
-            <component :is="componentType" :tableData="tableDataSon" :queryParams="queryParamsSon"
-              @optionsSon="handleOptionSon"></component>
-          </div>
-          <div style="text-align: center;margin-top: 10px;">
-            <el-pagination background layout="total, sizes, prev, pager, next, jumper"
-              :current-page.sync="queryParams.current" :page-size.sync="queryParams.size"
-              @current-change="handleCurrentChange" @size-change="getList()" :total="total">
-            </el-pagination>
+            <component :is="componentType" :tableData="scope.row.productData" :row="scope.row" @optionsSon="handleOptionSon"></component>
           </div>
         </template>
       </el-table-column>
@@ -81,46 +74,6 @@ export default {
     return {
       // 显示指定的子组件
       componentType: 'productTable',
-      // 查询产品所需字段
-      queryParamsSon: {
-        current: 1,
-        size: 10,
-      },
-      // 产品总数
-      total: 0,
-      // 产品数据
-      tableDataSon: [
-      {
-        "id": 43,
-        "productName": "测试人员产品",
-        "marketTime": "2023-04-19 00:00:00",
-        "companyName": "测试",
-        "tenantId": 7,
-        "productExplain": "测试不同租户下的产品",
-        "productCategoryId": 27,
-        "licenseRate": 0.5,
-        "createPersonName": "测试",
-        "pictures": [],
-        "productPatentNum": 0,
-        "patentNum": 0,
-        "productCategory": {
-          "id": 27,
-          "productCategoryName": "测试人员类别",
-          "remark": "测试不同租户下类别",
-          "licenseRate": 0.5,
-          "createPersonName": "测试",
-          "pictures": [
-            {
-                "id": 43,
-                "productCategoryId": 27,
-                "name": "1+",
-                "suffix": "jpg",
-                "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
-            }
-        ]
-    }
-}
-      ]
     }
   },
   mounted() {
@@ -179,16 +132,178 @@ export default {
     // 展开行打开或者关闭事件
     handleExpand(row, rowList) {
       console.log(row, rowList);
-      this.$emit('expand', { row, rowList })
+      // this.getList(row)
     },
     // 编辑下拉菜单
     handleCommand(val, row) {
       this.$emit('options', { val, row })
     },
-    // 分页
-    handleCurrentChange(val) { },
-    // 请求数据
-    getList() { },
+    
+    // 请求产品数据
+    getList(row) { 
+      console.log(2)
+      console.log(row)
+      if(!row.productData){
+        row.productData = []
+      }
+      row.queryParams.total = 10
+      row.productData.push(
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        }
+      )
+      if(row.queryParams.current*row.queryParams.size>=row.queryParams.total){
+        row.disabled = true
+        return
+      } 
+    },
   },
 }
 </script>

+ 194 - 7
src/views/product/components/view/productTable.vue

@@ -1,10 +1,14 @@
 <template>
   <!-- 产品table -->
-  <div class="productTable">
-    <el-table :data="tableData" header-row-class-name="custom-table-header">
+  <div class="productTable height_100">
+    <el-table :data="tableData" header-row-class-name="custom-table-header" 
+      v-el-table-infinite-scroll="getList"
+      :infinite-scroll-distance="10"
+      :infinite-scroll-disabled="disabled"
+      :height="row?300:auto">
       <el-table-column label="#" width="60" type="index" align="center">
         <template slot-scope="scope">
-          <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
+          <span>{{ (scope.$index + 1) }}</span>
         </template>
       </el-table-column>
 
@@ -41,6 +45,9 @@
         </template>
       </el-table-column>
     </el-table>
+
+    <el-alert v-if="isflag" title="正在努力加载中..." type="success" center :closable="false" show-icon></el-alert>
+    <el-alert v-if="isMore" title="没有更多啦!" type="warning" center show-icon></el-alert>
   </div>
 </template>
 
@@ -56,23 +63,203 @@ export default {
     queryParams: {
       type: Object,
       default: () => {
-        return {}
+        return {
+          current:0,
+          size:5
+        }
       }
-    }
+    },
+    row:''
   },
   data() {
     return {
-      
+      disabled:false,
+      isMore:false,
+      isflag:false,
     }
   },
   mounted() {
-    
+    if(!this.row){
+      this.disabled = true
+    }else{
+      this.getList()
+    }
   },
   methods: {
     // 编辑下拉菜单
     handleCommand(val, row) {
       this.$emit('optionsSon',{val,row})
     },
+    //获取数据
+    getList(){
+      if(this.disabled) return;
+      this.queryParams.current += 1
+      this.isMore = false;
+      this.isflag = true;
+      this.tableData.push(
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        },
+        {
+          "id": 43,
+          "productName": "测试人员产品",
+          "marketTime": "2023-04-19 00:00:00",
+          "companyName": "测试",
+          "tenantId": 7,
+          "productExplain": "测试不同租户下的产品",
+          "productCategoryId": 27,
+          "licenseRate": 0.5,
+          "createPersonName": "测试",
+          "pictures": [],
+          "productPatentNum": 0,
+          "patentNum": 0,
+          "productCategory": {
+            "id": 27,
+            "productCategoryName": "测试人员类别",
+            "remark": "测试不同租户下类别",
+            "licenseRate": 0.5,
+            "createPersonName": "测试",
+            "pictures": [
+              {
+                  "id": 43,
+                  "productCategoryId": 27,
+                  "name": "1+",
+                  "suffix": "jpg",
+                  "url": "/20230509/112080e1e7ee4899b9a765248cf92254.jpg"
+              }
+            ]
+          }
+        }
+      )
+      this.queryParams.total = 15
+      console.log(this.queryParams)
+      if(this.queryParams.current * this.queryParams.size >= this.queryParams.total){
+        this.isMore = true 
+        this.disabled = true
+      }
+
+      this.$nextTick(()=>{
+        this.isMore = false;
+        this.isflag = false 
+      })
+    }
   },
 }
 </script>

+ 16 - 27
src/views/project/components/view/card.vue

@@ -1,9 +1,9 @@
 <template>
-    <div class="common-project-card">
+    <div class="height_100">
       <el-row :gutter="24">
         <el-col :span="6" v-for="(item, index) in tableData" class="c">
-          <el-card shadow="never">
-            <div slot="header" class="clearfix">
+          <myCard shadow="never">
+            <div slot="head" class="clearfix">
               <span># {{ (index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>
               <el-dropdown class="float_right" @command="handleCommand($event, item)" trigger="click" size="small">
                 <span class="el-dropdown-link">
@@ -61,7 +61,13 @@
                 <div class="a" :title="item.technicalTheme">{{ item.technicalTheme }}</div>
               </el-form-item>
             </el-form>
-          </el-card>
+            <div slot="foot">
+              <div class="btn">
+                <i class="el-icon-edit" @click="handleEdit(item)"></i>
+                <i class="el-icon-delete" @click="handleCommand('3', item)"></i>
+              </div>
+            </div>
+          </myCard>
         </el-col>
       </el-row>
     </div>
@@ -93,30 +99,13 @@
       cursor: not-allowed;
       pointer-events:none;
     }
-  .common-project-card {
-    .c {
-      margin-bottom: 15px;
-      .el-card__header {
-        padding: 10px !important;
-        border-bottom: 1px solid #EBEEF5 !important;
-        font-weight: 500;
+    .btn{
+      margin: 0;
+      i{
+        color: var(--color2);
+        font-size: 16px;
+        margin-right:16px
       }
     }
-    .i {
-      padding: 10px;
-      .a {
-        text-align: right;
-        overflow: hidden;
-        height: 40px;
-      }
-      .el-form-item {
-        margin-bottom: 0 !important;
-        border-bottom: 1px dashed #ddd;
-        .el-form-item__label {
-          color: #000;
-        }
-      }
-    }
-  }
   </style>
   

+ 6 - 3
src/views/project/index.vue

@@ -56,7 +56,7 @@
             </el-pagination>
           </div>
         </el-main>
-        <el-footer class="pagination" v-if="['可视化'].indexOf(isOperate) != -1">
+        <el-footer class="pagination" v-if="['可视化'].indexOf(isOperate) != -1 ">
           <el-pagination
                 backgroundx
                 layout="total, prev, pager, next, jumper"
@@ -71,6 +71,7 @@
       
     </div>
     <project-form-drawer  @submit="submitProjectForm" :common-data="commonData" ref="projectFormDrawer" />
+    <field ref="field" ></field>
   </div>
 </template>
 
@@ -81,12 +82,14 @@ import Table from "./components/view/table.vue";
 import Card from "./components/view/card.vue";
 
 import ProjectFormDrawer from './components/drawer/form.vue'
+import field from '@/views/components/dialog/fields.vue';
 export default {
   components: {
     TotalChart,
     Table,
     Card,
-    ProjectFormDrawer
+    ProjectFormDrawer,
+    field
   },
   props: {
    isOperate:''
@@ -259,7 +262,7 @@ export default {
     },
     //显示栏位管理
     handleField() {
-      this.$refs.projectTableField.open(this.projectField)
+      this.$refs.field.open(this.fieldList)
     },
     //操作列
     handleOption({ option, row }) {