From 363678a54142e62fdd4ca39a0db5c54af1a704dc Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 29 二月 2024 15:39:59 +0800
Subject: [PATCH] 生产调度修改

---
 src/views/plan/productionschedul/index.vue |  652 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 551 insertions(+), 101 deletions(-)

diff --git a/src/views/plan/productionschedul/index.vue b/src/views/plan/productionschedul/index.vue
index 0775072..fb8f678 100644
--- a/src/views/plan/productionschedul/index.vue
+++ b/src/views/plan/productionschedul/index.vue
@@ -2,45 +2,194 @@
   <div class="mod-config">
     <basic-container>
       <el-row>
-        <el-col :span="12">
-          <div style="height:80vh">
-            <avue-crud :data="tableData" ref="crud" :option="option" :span-method="spanMethod" 
-            @refresh-change="getData"
-            :page="page" 
-            @selection-change="selectionRow"
-            :table-loading="loading">
-            <template #menu="{ row, index }">
-              <el-button type="text" icon="el-icon-delete" size="small" @click="deleteHandle(row, index)">鍒犻櫎</el-button>
-            </template>
-          </avue-crud>
-          </div>
-        </el-col>
-        <el-col :span="12" style="padding-left: 10px">
-          <div style="">
-            <el-card>
-              <div slot="header" class="clearfix">
-                <span>璋冨害鏃堕棿绾�</span>
-                <el-button style="float: right; padding: 3px 0" type="text">鎿嶄綔鎸夐挳</el-button>
+        <el-col :span="24">
+          <el-row style="padding:0px 10px;">
+            <el-col :span="24" style="margin: 0;">
+              <div style="display:flex;height:36px;justify-content: space-between;align-items:center;">
+                <div>
+                    <el-dropdown @command="changeTable">
+                        <span :style="dropdownTitleStyle" class="el-dropdown-link">
+                            {{dropdownTitle}}<i class="el-icon-arrow-down el-icon--right"></i>
+                        </span>
+                        <el-dropdown-menu slot="dropdown">
+                            <el-dropdown-item command="undone">寰呭畬鎴愯皟搴�</el-dropdown-item>
+                            <el-dropdown-item command="done">宸插畬鎴愯皟搴�</el-dropdown-item>
+                        </el-dropdown-menu>
+                    </el-dropdown>
+                </div>
+                <div>
+                  <el-button @click="tagFinished" v-if="showUnDownTable" size="mini" round type="success">鏍囪宸插畬鎴�</el-button>
+                  <el-button size="mini" round type="primary"
+                  v-if="permissions.plan_productionschedul_edit_line && showUnDownTable"
+                  @click="openEditDialog">缂栬緫鏃堕棿绾�</el-button>
+                  <el-tooltip content="鍒锋柊">
+                    <el-button circle icon="el-icon-refresh" @click="getDataList"></el-button>
+                  </el-tooltip>
+                </div>
               </div>
-              <div style="height:70vh;overflow-y: scroll;">
-                <el-timeline>
-                    <el-timeline-item
-                      placement="top"
-                      v-for="(item, index) in scheduleList"
-                      :key="index"
-                      :timestamp="item.planTime">
-                        <el-card style="width:95%;margin: 0;padding: 0px 10px;">
-                          <p style="font-weight: bold;">{{item.title}}</p>
-                          <p>瀹為檯鏃堕棿: {{ item.actualTime }}</p>
-                        </el-card>
-                    </el-timeline-item>
-                </el-timeline>
-            </div>
-            </el-card>
-          </div>
+              <!-- 寰呭畬鎴愯皟搴﹁〃鏍� -->
+              <avue-crud
+              v-if="showUnDownTable"
+              class="unfinished-crud"
+              :data="tableData"
+              ref="unfinished"
+              :option="option"
+              :span-method="spanMethod"
+              @refresh-change="getDataList"
+              @current-change="handleCurrentChange"
+              @size-change="handleSizeChange"
+              @cell-click="handleClickCell"
+              :page="page"
+              @selection-change="selectionRow"
+              :table-loading="loading">
+                <template slot="product" slot-scope="scope">
+                    <el-link type="primary">{{ scope.row.product }}</el-link>
+                </template>
+                <template #menu="{ row, index }">
+                    <el-button
+                    v-if="permissions.plan_productionschedul_edit"
+                    type="text"
+                    icon="el-icon-edit"
+                    size="small"
+                    @click="editHandle(row, index)">缂栬緫</el-button>
+                    <el-button
+                    v-if="permissions.plan_productionschedul_del"
+                    type="text"
+                    icon="el-icon-delete"
+                    size="small"
+                    @click="deleteHandle(row, index)">鍒犻櫎</el-button>
+                </template>
+              </avue-crud>
+              <!-- 宸插畬鎴愯皟搴﹁〃鏍� -->
+              <avue-crud
+              v-else
+              class="finished-crud"
+              :data="finishedTableData"
+              ref="finished"
+              :option="finishedOption"
+              :span-method="spanMethod"
+              @refresh-change="getFinishedData"
+              @current-change="handleCurrentChange"
+              @cell-click="handleClickCell"
+              @size-change="handleSizeChange"
+              :page="finishedPage"
+              @selection-change="selectionFinishedRow">
+                <template slot="product" slot-scope="scope">
+                    <el-link type="primary">{{ scope.row.product }}</el-link>
+                </template>
+              </avue-crud>
+            </el-col>
+          </el-row>
         </el-col>
       </el-row>
     </basic-container>
+    <!-- 缂栬緫鏃堕棿绾� -->
+    <el-dialog
+    title="缂栬緫鏃堕棿绾�"
+    :visible.sync="dialogVisible"
+    top="5vh"
+    width="50%">
+      <div style="height:60vh;overflow-y: scroll;">
+        <el-timeline>
+          <el-timeline-item
+            placement="top"
+            v-for="(item, index) in scheduleEditList"
+            :key="index"
+            :timestamp="item.title">
+              <el-card shadow="hover" style="width:90%" :body-style="{padding:'20px 20px 5px 20px'}">
+                <el-row>
+                  <el-col :span="3">
+                    <p style="font-weight: bold;line-height: 50%;">璁″垝鏃堕棿: </p>
+                  </el-col>
+                  <el-col :span="21">
+                    <el-date-picker
+                      style="width:100%"
+                      v-model="item.planTime"
+                      value-format="yyyy-MM-dd HH:mm:ss"
+                      type="datetime"
+                      placeholder="閫夋嫨璁″垝鏃堕棿">
+                    </el-date-picker>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="3">
+                    <p style="font-weight: bold;line-height: 50%;">瀹為檯鏃堕棿: </p>
+                  </el-col>
+                  <el-col :span="21">
+                    <el-date-picker
+                      style="width:100%"
+                      v-model="item.actualTime"
+                      value-format="yyyy-MM-dd HH:mm:ss"
+                      type="datetime"
+                      placeholder="閫夋嫨瀹為檯鏃堕棿">
+                    </el-date-picker>
+                  </el-col>
+                </el-row>
+              </el-card>
+          </el-timeline-item>
+        </el-timeline>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmEditSchedul">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <!-- 缂栬緫鐢熶骇杩囩▼鍜岀敓浜ф儏鍐� -->
+    <el-dialog
+        title="缂栬緫"
+        :visible.sync="editDialogVisible"
+        width="50%">
+        <el-form :model="editForm" label-width="120px">
+        <el-row>
+            <el-col :span="24">
+            <el-form-item label="鐢熶骇鎯呭喌:">
+                <el-input style="width:100%" placeholder="璇疯緭鍏ョ敓浜ф儏鍐�" type="textarea" :row="2" v-model="editForm.productionStatus"></el-input>
+            </el-form-item>
+            </el-col>
+        </el-row>
+        <el-row>
+            <el-col :span="24">
+            <el-form-item label="鐢熶骇绋嬪害:">
+                <el-input style="width:100%" placeholder="璇疯緭鍏ョ敓浜х▼搴�" type="textarea" :row="2" v-model="editForm.productionRoutine"></el-input>
+            </el-form-item>
+            </el-col>
+        </el-row>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+        <el-button @click="editDialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmEdit()">纭� 瀹�</el-button>
+        </span>
+    </el-dialog>
+    <!-- 鏌ョ湅鏃堕棿绾� -->
+    <el-dialog
+    title="鏌ョ湅璋冨害鏃堕棿绾�"
+    top="5vh"
+    :visible.sync="showTimeLineDialog"
+    width="40%">
+        <el-card>
+            <div style="height:500px;overflow-y: scroll;">
+            <el-timeline>
+                <el-timeline-item
+                    placement="top"
+                    :color="(item.actualTime) ? '#34BD66' :null"
+                    :icon="(item.actualTime) ? 'el-icon-circle-check' :null"
+                    v-for="(item, index) in scheduleList"
+                    :key="index"
+                    :timestamp="item.title">
+                    <el-card shadow="hover" :body-style="{margin: '0',padding:'0px 20px 0px 20px'}" style="width:90%;">
+                        <p>
+                        <span style="font-weight: bold;">璁″垝鏃堕棿: </span>
+                        {{item.planTime}}
+                        </p>
+                        <p>
+                        <span style="font-weight: bold;">瀹為檯鏃堕棿: </span>
+                        {{ item.actualTime }}</p>
+                    </el-card>
+                </el-timeline-item>
+            </el-timeline>
+            </div>
+        </el-card>
+    </el-dialog>
   </div>
 </template>
 
@@ -48,32 +197,65 @@
 import {
   fetchScheduleList,
   fetchScheduleById,
+  fillTime,
+  deleteSchedul,
+  updateState,
+  checkTimeLines,
+  updateSchedul
 } from '@/api//plan/productionschedul'
-import TableForm from './template-form'
 import ttable from '@/views/common/ztt-table.vue'
 import { mapGetters } from 'vuex'
 export default {
     data() {
     return {
+      dropdownTitleStyle: {
+        color: '#E84738',
+        fontWeight: 'bold'
+      },
+      showUnDownTable: true,
+      dropdownTitle: '寰呭畬鎴愯皟搴�',
+      showTimeLineDialog:false,
+      editForm:{
+        id: null,
+        productionRoutine: null,
+        productionStatus: null,
+      },
+      editDialogVisible: false,
+      dialogVisible: false,
       scheduleList: [],
+      scheduleEditList: [],
       typeOptions: [],
       multipleSelection: [],
       loading: true,
       tableData: [],
+      finishedTableData: [],
       page: {
-        total: 10,
+        total: 0,
         currentPage: 1,
-        pageSize: 10
+        pageSize: 10,
+        pagerCount: 5
+      },
+      finishedPage: {
+        total: 0,
+        currentPage: 1,
+        pageSize: 10,
+        pagerCount: 5
       },
       option: {
-        height: 400,
+        defaultSort:{
+          prop:'id',
+          order:'descending'
+        },
+        height: 530,
         selection: true,
         columnBtn: false,
         index: true,
-        rowKey: 'product',
+        indexFixed: false,
+        selectionFixed: false,
+        rowKey: 'mid',
         indexLabel: '搴忓彿',
         menuAlign: 'center',
-        menuWidth: 100,
+        menuWidth: 130,
         editBtn: false,
         delBtn: false,
         addBtn: false,
@@ -123,6 +305,119 @@
             prop: 'product',
             label: '浜у搧鍚�',
             overHidden: true,
+            slot: true
+          },
+          {
+            minWidth: 120,
+            prop: 'specs',
+            label: '瑙勬牸鍨嬪彿',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'unit',
+            label: '鍗曚綅',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'number',
+            label: '鏁伴噺',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'productionStatus',
+            label: '鐢熶骇鎯呭喌',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'productionRoutine',
+            label: '鐢熶骇绋嬪害',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'projectLeader',
+            label: '椤圭洰璐熻矗浜�',
+            overHidden: true,
+          },
+          {
+            minWidth: 150,
+            prop: 'remark',
+            label: '澶囨敞',
+            overHidden: true,
+          }
+        ],
+      },
+      finishedOption: {
+        refreshBtn: false, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
+        defaultSort:{
+          prop:'id',
+          order:'descending'
+        },
+        height: 230,
+        selection: true,
+        columnBtn: false,
+        index: true,
+        indexFixed: false,
+        selectionFixed: false,
+        rowKey: 'mid',
+        indexLabel: '搴忓彿',
+        menu: false,
+        menuAlign: 'center',
+        menuWidth: 130,
+        editBtn: false,
+        delBtn: false,
+        addBtn: false,
+        border: true,
+        align: 'center',
+        column: [
+          {
+            minWidth: 120,
+            prop: 'projectName',
+            label: '椤圭洰鍚嶇О',
+            overHidden: true,
+          },
+          {
+            minWidth: 100,
+            prop: 'contractNo',
+            label: '鍚堝悓鍙�',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'orderTime',
+            label: '鎺ュ崟鏃ユ湡',
+            overHidden: true,
+            formatter: (row,columnValue)=> this.formatDate(row,columnValue)
+          },
+          {
+            minWidth: 120,
+            prop: 'customerName',
+            label: '瀹㈡埛鍚嶇О',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'deliveryDate',
+            label: '浜よ揣鏃ユ湡',
+            overHidden: true,
+            formatter: (row,columnValue)=> this.formatDate(row,columnValue)
+          },
+          {
+            minWidth: 120,
+            prop: 'productType',
+            label: '浜у搧绫诲瀷',
+            overHidden: true,
+          },
+          {
+            minWidth: 120,
+            prop: 'product',
+            label: '浜у搧鍚�',
+            overHidden: true,
+            slot: true
           },
           {
             minWidth: 120,
@@ -169,12 +464,15 @@
         ],
       },
       spanArr: [{
+        prop: 'id',
+        span: []
+      },{
         prop: 'projectName',
         span: []
       }, {
         prop: 'contractNo',
         span: []
-      }, 
+      },
       {
         prop: 'orderTime',
         span: []
@@ -196,33 +494,154 @@
   },
   components: {
     ttable,
-    TableForm,
   },
   computed: {
     ...mapGetters(['permissions']),
   },
   created(){
+    if(!this.permissions.plan_productionschedul_edit && !this.permissions.plan_productionschedul_del){
+      this.option.menu = false
+    }
     this.loading = true
-    this.getData()
+    this.getUnFinishedData()
+    this.getFinishedData()
     this.getParamType()
-    this.rowSort()
+    // this.rowSort()
     this.rowCalc()
   },
   beforeUpdate() {
-    this.rowSort()
+    // this.rowSort()
     this.rowCalc()
   },
   watch:{
-
+    editDialogVisible(newVal){
+      if(!newVal){
+        this.editForm = {
+          id: null,
+          productionRoutine: null,
+          productionStatus: null,
+        }
+      }
+    },
+    multipleSelection(newVal){
+      if(newVal.length==0){
+        this.scheduleList = []
+      }
+    }
   },
-  mounted() {
-
-  },
-  beforeDestroy() {
-  },
+  mounted() {},
+  beforeDestroy() {},
   methods: {
+    handleClickCell(row, column, cell, event){
+        if(column.label === '浜у搧鍚�'){
+            this.getScheduleById(row.mid)
+            this.showTimeLineDialog = true
+        }
+    },
+    changeTable(command){
+        if(command === 'undone'){
+            this.dropdownTitle = '寰呭畬鎴愯皟搴�'
+            this.dropdownTitleStyle = {color:'#E84738',fontWeight: 'bold'}
+            this.showUnDownTable = true
+        }else if(command === 'done'){
+            this.dropdownTitle = '宸插畬鎴愯皟搴�'
+            this.dropdownTitleStyle = {color:'#34BD66',fontWeight: 'bold'}
+            this.showUnDownTable = false
+        }
+    },
+    tagFinished(){
+      if(this.multipleSelection.length < 1){
+        this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�")
+        return
+      }
+      let ids = this.multipleSelection.map(ele=>{
+        return ele.mid
+      })
+      updateState(ids).then(res=>{
+        if(res.status===200){
+          this.$message.success("鏇存柊鎴愬姛")
+          this.getUnFinishedData()
+          this.getFinishedData()
+        }
+      }).catch(error=>{
+        console.error(error);
+      })
+    },
+    confirmEdit(){
+      const _than = this
+      updateSchedul(this.editForm).then(res=>{
+        if(res.status===200){
+          _than.$message.success("鏇存柊鎴愬姛")
+          _than.editDialogVisible = false
+          _than.getUnFinishedData()
+        }
+      }).catch(error=>{
+        console.error(error);
+      })
+    },
+    editHandle(row,index){
+      if(row){
+        this.editForm.id = row.mid
+        this.editForm.productionRoutine = row.productionRoutine
+        this.editForm.productionStatus = row.productionStatus
+        this.editDialogVisible = true
+      }
+    },
+    openEditDialog(){
+      if(this.multipleSelection.length<1){
+        this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�")
+        return
+      }
+      let mIds = this.multipleSelection.map(ele=>{
+        return ele.mid
+      })
+      checkTimeLines(mIds).then(res=>{
+        if(res.data.data.length==1){
+          let dataList = this.initTimeLine(res.data.data[0])
+          this.scheduleEditList = dataList
+          this.dialogVisible = true
+        }else{
+          this.$message.error("閫変腑鏁版嵁鐨勮皟搴︽椂闂寸嚎涓嶄竴鑷�!")
+        }
+      }).catch(error=>{
+        console.error(error);
+      })
+    },
+    confirmEditSchedul(){
+      const _than = this
+      let data = this.scheduleEditList
+      let mIds = this.multipleSelection.map(ele=>{
+        return ele.mid
+      })
+      let obj = {
+        "documentActualTime": data[0].actualTime,
+        "documentPlanTime": data[0].planTime,
+        "bomActualTime": data[1].actualTime,
+        "bomPlanTime": data[1].planTime,
+        "contractActualTime": data[2].actualTime,
+        "contractPlanTime": data[2].planTime,
+        "arrivalActualTime": data[3].actualTime,
+        "arrivalPlanTime": data[3].planTime,
+        "checkActualTime": data[4].actualTime,
+        "checkPlanTime": data[4].planTime,
+        "productActualTime": data[5].actualTime,
+        "productPlanTime": data[5].planTime,
+        "mids": mIds,
+      }
+      fillTime(obj).then(res=>{
+        if(res.status===200){
+            _than.$message.success("鏇存柊鎴愬姛")
+        }else{
+            _than.$message.error("鏇存柊澶辫触")
+        }
+        // _than.getScheduleById(orderObj.id)
+        _than.dialogVisible = false
+      }).catch(error=>{
+        console.error(error);
+      })
+    },
     initTimeLine(data){
-      this.scheduleList = []
+      let scheduleList = []
       if(data){
         let arr = [
           {
@@ -256,24 +675,35 @@
             planTime: data.productPlanTime,
           },
         ]
-        this.scheduleList = arr
+        scheduleList = arr
+        return scheduleList
       }
     },
     getScheduleById(id){
       if(id){
         fetchScheduleById(id).then(res=>{
-          this.initTimeLine(res.data.data)
+          this.scheduleList = this.initTimeLine(res.data.data)
         }).catch(error=>{
-          console.log(error);
+          console.error(error);
         })
       }
     },
     selectionRow(val){
+      this.multipleSelection = val
+    //   if(this.multipleSelection.length>0){
+    //       this.getScheduleById(val[val.length-1].mid)
+    //       this.showTimeLineDialog = true
+    //   }
+    },
+    selectionFinishedRow(val){
       if (val.length > 1) {
-         const preVal = val.shift();
-         this.$refs.crud.toggleRowSelection(preVal, false);
-       }
-       this.getScheduleById(val[0].id)
+        const preVal = val.shift();
+        this.$refs.finished.toggleRowSelection(preVal, false);
+      }
+      else{
+        this.scheduleList=[]
+      }
+      this.getScheduleById(val[0].mid)
     },
     formatDate(row, cellValue){
       if (cellValue) {
@@ -284,12 +714,32 @@
       }
       return ''
     },
+    handleSizeChange(val){
+      if(val){
+        this.page.pageSize=val
+        this.getUnFinishedData()
+      }
+    },
+    handleCurrentChange(val){
+      if(val){
+        this.page.currentPage=val
+        this.getUnFinishedData()
+      }
+    },
     // 鑾峰彇鏁版嵁鍒楄〃
-    getData() {
+    getDataList(){
+      this.getUnFinishedData()
+      this.getFinishedData()
+      this.$nextTick(()=>{
+          this.rowCalc()
+      })
+    },
+    getUnFinishedData() {
       this.loading = true
       let param = {
-        size: 20,
-        current: 1,
+        size: this.page.pageSize,
+        current: this.page.currentPage,
+        state: false
       }
       fetchScheduleList(param).then((res) => {
         this.tableData = res.data.data.records
@@ -299,17 +749,37 @@
       })
       this.loading = false
     },
-    handleCurrentChange(val) {
-      this.multipleSelection = val
+    getFinishedData() {
+      this.loading = true
+      let param = {
+        size: this.finishedPage.pageSize,
+        current: this.finishedPage.currentPage,
+        state: true
+      }
+      fetchScheduleList(param).then((res) => {
+        this.finishedTableData = res.data.data.records
+        this.finishedPage.total = res.data.data.total
+        this.finishedPage.currentPage = res.data.data.records.pages
+        this.scheduleList = []
+      })
+      this.loading = false
     },
     // 鍒犻櫎
     deleteHandle(row,index) {
-      this.$confirm('鏄惁纭鍒犻櫎', '鎻愮ず', {
+      const _than = this
+      _than.$confirm('鏄惁纭鍒犻櫎璇ョ敓浜ц皟搴︿俊鎭�', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(function() {
-
+        deleteSchedul(row.mid).then(res=>{
+          if(res.status===200){
+            _than.$message.success("鍒犻櫎鎴愬姛")
+            _than.getDataList()
+          }
+        }).catch(error=>{
+          console.error(error)
+        })
       })
     },
     //鍔ㄦ�佸悎骞舵柟娉�
@@ -320,7 +790,7 @@
         ele.span = this.rowSpan(ele.prop, parent)
       })
     },
-    rowSort(list) {
+    rowSort() {
       let propList = this.spanArr.map(ele => ele.prop)
       this.spanArr.forEach((ele, index) => {
         let key = ele.prop
@@ -380,42 +850,22 @@
 }
 </script>
 <style>
-.basic-template-table .el-table__body .el-table__row td:first-child .cell {
-  padding-left: 0px;
-  padding-right: 0px;
-}
-
-.basic-template-table .el-table__body .el-table__row:hover {
-  cursor: move;
-}
-
-.basic-template-table .el-table__body .el-table__row:hover .icon {
-  display: inline-block;
-}
-
-.basic-template-table .el-table__body .el-table__row .icon {
-  color: rgba(0, 0, 0, 0.45);
-  font-size: 12px;
-  line-height: 18px;
+.unfinished-crud .avue-crud__tip{
   display: none;
 }
-
-.aufontAll {
-  font-family: aufontAll !important;
-  font-size: 14px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
+.unfinished-crud .avue-crud__menu{
+  display: none;
 }
-
-.h-icon-all-drag {
-  background: url('/img/tz.png') center center no-repeat;
-  background-size: cover;
-  font-size: 14px;
+.finished-crud .avue-crud__tip{
+  display: none;
 }
-.h-icon-all-drag:before {
-  content: '\E63E';
-  font-size: 14px;
-  visibility: hidden;
+.finished-crud .avue-crud__menu{
+  display: none;
+}
+.avue-crud__pagination {
+    position: relative;
+    padding: 0px 0 0px 20px;
+    text-align: right;
+    z-index: 10;
 }
 </style>

--
Gitblit v1.9.3