<template> <div v-loading="loading" class="container" style="position:relactive"> <div style="position:absolute;top:170px;right:100px;z-index:999" v-show="editBtn"> <!-- <el-button class="miniSuccess" @click="control_edit()">编辑</el-button> --> <el-button type="primary" size="mini" :loading="control_btn_l" @click="control_edit()"> {{control_btn}} </el-button> </div> <el-card v-show="false" body-style="padding: 0px;" class="dashboard-list" shadow="never"> <!-- <div slot="header"> <span>看板</span> <i class="el-icon-plus" @click="addDashboard" /> </div> --> <ul> <draggable v-model="dashboardList" :group="{name: 'dashboard',pull: true}" class="draggable-wrapper" @change="handleOrderChange"> <li v-for="item in dashboardList" :key="item.dashboard_id" :class="{'dashboard-list-item': true, 'high-light-dashboard': currentDashboard.dashboard_id === item.dashboard_id}"> <span @click="switchDb(item)"> <i class="el-icon-document" /> <span>{{ item.name }}</span> </span> <el-dropdown szie="mini" trigger="click" @command="handleCommand"> <span class="el-dropdown-link"> <i class="el-icon-more" /> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item :command="{ type: 'edit', target: item }"> {{ $t('common.edit') }} </el-dropdown-item> <el-dropdown-item :command="{ type: 'delete', target: item }"> {{ $t('common.delete') }} </el-dropdown-item> </el-dropdown-menu> </el-dropdown> </li> </draggable> </ul> </el-card> <dashboardItem :dashboard="currentDashboard" :mode="isEdit" :title="isTitle" @fatherMethod="getList" /> <el-dialog :title="$t('dashboard.addOrEditDashboard')" width="750px" :visible.sync="editDialogVisible"> <el-form label-width="160px"> <el-form-item :label="$t('dashboard.dashboardName')"> <el-input v-model="dbObj.name" size="small" style="width: 450px;" :placeholder="$t('dashboard.dashboardNamePlaceholder')" /> </el-form-item> <el-form-item :label="$t('dashboard.dashboardDesc')"> <el-input v-model="dbObj.desc" type="textarea" :rows="5" size="small" style="width: 450px;" :placeholder="$t('dashboard.dashboardDescPlaceholder')" /> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button type="primary" size="small" @click="editDialogVisible = false"> {{ $t('common.cancel') }}</el-button> <el-button type="primary" size="small" @click="handleSubmit"> {{ $t('common.confirm') }}</el-button> </span> </el-dialog> </div> </template> <script> import draggable from 'vuedraggable' import dashboardItem from './dashboardItem' import { GetDataByName, ExeSqlJiade, PostDataByName, dashboardListJiade } from '@/api/common' import Cookies from 'js-cookie' // import { addDashboard, updateDashboard, dashboardList, deleteDashboard, dbOrder } from '@/api/dashboard' import { addDashboard, updateDashboard, deleteDashboard, dbOrder } from '@/api/dashboard' export default { name: 'Addboard', components: { dashboardItem, draggable }, data() { return { isEdit: 'view', dashboardList: [], currentDashboard: undefined, editDialogVisible: false, dbObj: {}, loading: false, isCollapse: false, did: undefined, isTitle: '2', editBtn: false, control_btn: '编辑', control_btn_l: false, get_role_data: { name: 'getChartRole', page: 1, offset: 1, pagecount: 10, returntype: 'Map', parammaps: { pastureid: Cookies.get('pastureid'), empid: Cookies.get('employeid'), type: '1', id: localStorage.getItem("AddboardIsEditId"), } }, } }, created() { // console.log('this.$route.params.id', this.$route.params.id) // const isEdit = this.$route.params.isEdit // this.isEdit = isEdit this.did = window.location.href.split('~')[1] this.haha = window.location.href.split('~')[2] console.log('this.did', this.did) console.log('this.haha', this.haha) if (this.haha == 3) { console.log('this.haha333333333') this.isTitle = '3' this.editBtn = false } else { this.isTitle = '2' this.get_Role() } this.getList() }, methods: { get_Role() { GetDataByName(this.get_role_data).then(res => { console.log('权限数据', res.data) if (res.data.list[0].statue == 'editOk') { this.editBtn = true } else { this.editBtn = false } }) }, control_edit() { this.isEdit = 'edit' if (this.control_btn == "编辑") { this.control_btn = "正在编辑" this.control_btn_l = true } else { this.control_btn = "编辑" this.control_btn_l = false } }, // getList() { // this.loading = true // dashboardList().then(resp => { // this.loading = false // this.dashboardList = [] // resp.data.order.forEach((id, index) => { // const itemIndex = resp.data.dashboards.findIndex(item => item.dashboard_id === id) // if (itemIndex >= 0) { // this.dashboardList.push(resp.data.dashboards[itemIndex]) // resp.data.dashboards.splice(itemIndex, 1) // } else { // console.log(id, index) // } // }) // this.dashboardList = this.dashboardList.concat(resp.data.dashboards) // const dashboard = this.dashboardList.find(item => item.dashboard_id === this.$route.query.id) // if (dashboard) { // this.currentDashboard = dashboard // } else { // this.currentDashboard = this.dashboardList[0] // } // if (this.currentDashboard) { // this.$router.push(`/dashboard?id=${this.currentDashboard.dashboard_id}`).catch(_ => { }) // } // }) // }, getList() { this.loading = true // if (this.$route.params.id) { // this.did = this.$route.params.id // } else { // this.did = this.did // } if (this.did) { this.did = this.did } else { this.did = localStorage.getItem("AddboardIsEditId") } var send_data = { name: 'getdashboardsV2', parammaps: { pastureid: Cookies.get('pastureid'), empid: Cookies.get('employeid'), did: this.did } } console.log('进入大页面=================') dashboardListJiade(send_data).then(resp => { this.loading = false this.dashboardList = [] console.log('看板列表数据:', resp) console.log('看板列表优化数据list:', resp.data.list) console.log('看板列表优化数据dashboards:', resp.data.dashboards) // resp.data.order.forEach((id, index) => { // const itemIndex = resp.data.dashboards.findIndex(item => item.dashboard_id === id) // if (itemIndex >= 0) { // this.dashboardList.push(resp.data.dashboards[itemIndex]) // resp.data.dashboards.splice(itemIndex, 1) // } else { // console.log(id, index) // } // }) this.dashboardList = this.dashboardList.concat(resp.data.dashboards) // const dashboard = this.dashboardList.find(item => item.dashboard_id === this.$route.params.id) const dashboard = this.dashboardList.find(item => item.dashboard_id === localStorage.getItem("AddboardIsEditId")) if (dashboard) { this.currentDashboard = dashboard } else { this.currentDashboard = this.dashboardList[0] } console.log('this.currentDashboard', this.currentDashboard) console.log('this.dashboardList', this.dashboardList) if (this.currentDashboard) { // this.$router.push({ path: '/customboard/addboard', query: { id: this.currentDashboard.dashboard_id }}).catch(_ => { }) } }) }, switchDb(db) { if (db.dashboard_id === this.currentDashboard.dashboard_id) { this.getList() return } this.currentDashboard = db this.$router.push(`/dashboard?id=${this.currentDashboard.dashboard_id}`) }, addDashboard() { this.dbObj = {} this.editDialogVisible = true }, editDashboard(db) { this.dbObj = Object.assign({}, db) this.editDialogVisible = true }, handleCommand(cmd) { if (cmd.type === 'edit') { this.editDashboard(cmd.target) } else { this.deleteDashboard(cmd.target) } }, // handleSubmit() { // if (this.dbObj.dashboard_id) { // updateDashboard(this.dbObj).then(resp => { // this.getList() // this.editDialogVisible = false // }) // } else { // addDashboard(this.dbObj).then(resp => { // this.getList() // this.editDialogVisible = false // }) // } // }, handleSubmit() { if (this.dbObj.dashboard_id) { updateDashboard(this.dbObj).then(resp => { this.getList() this.editDialogVisible = false }) } else { console.log('this.dbObj', this.dbObj) var data = { name: 'insertDashboard', parammaps: { dname: this.dbObj.name, display: this.dbObj.desc, pastureid: Cookies.get('pastureid'), empid: Cookies.get('employeid'), emp: Cookies.get('employename') } } PostDataByName(data).then(response => { console.log('新增保存发送参数', data) this.$message({ type: 'success', message: this.$t('common.saveSuccess') }) this.getList() this.editDialogVisible = false }) // addDashboard(this.dbObj).then(resp => { // this.getList() // this.editDialogVisible = false // }) } }, handleOrderChange(evt) { const data = { order: this.dashboardList.map(item => item.dashboard_id) } dbOrder(data) }, deleteDashboard(db) { this.$confirm(this.$t('dashboard.deleteConfirm', db.name), this.$t('common.confirm')).then(() => { deleteDashboard({ dashboard_id: db.dashboard_id }).then(() => { this.getList() this.$message({ type: 'success', message: this.$t('common.deleteSuccess') }) }) }) } } } </script> <style lang="scss" scoped> .container { display: flex; min-height: calc(100vh - 62px); // align-items: stretch; .dashboard-list { width: 250px; min-height: 100%; padding: 20px 10px; /deep/ .el-card__header { div { display: flex; justify-content: space-between; font-size: 14px; color: #606266; i { cursor: pointer; } } padding: 5px 0px; } .dashboard-list-item { display: flex; justify-content: space-between; line-height: 35px; font-size: 14px; cursor: pointer; color: #606266; i { margin-right: 10px; line-height: 35px; } } .high-light-dashboard { color: #205cd8; } } .dashboard-wrapper { width: 100%; } } </style>