From b62578f8b43f15be89b3d14f463f11aed03e6fb9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 09 五月 2024 18:57:25 +0800
Subject: [PATCH] 最新版本
---
admin/src/views/business/internalCompany.vue | 205 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 157 insertions(+), 48 deletions(-)
diff --git a/admin/src/views/business/internalCompany.vue b/admin/src/views/business/internalCompany.vue
index 2cba996..b34143c 100644
--- a/admin/src/views/business/internalCompany.vue
+++ b/admin/src/views/business/internalCompany.vue
@@ -1,75 +1,84 @@
<template>
- <TableLayout :permissions="['business:company:query']">
+ <TableLayout>
+<!-- :permissions="['business:company:query']"-->
<!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="缁勭粐鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎵�灞炰笂绾х粍缁�" prop="parentName">
- <el-input v-model="searchForm.parentName" placeholder="璇疯緭鍏ユ墍灞炰笂绾х粍缁�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
+<!-- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>-->
+<!-- <el-form-item label="缁勭粐鍚嶇О" prop="name">-->
+<!-- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>-->
+<!-- </el-form-item>-->
+<!-- <el-form-item label="鎵�灞炰笂绾х粍缁�" prop="parentName">-->
+<!-- <el-input v-model="searchForm.parentName" placeholder="璇疯緭鍏ユ墍灞炰笂绾х粍缁�" @keypress.enter.native="search"></el-input>-->
+<!-- </el-form-item>-->
+<!-- <section>-->
+<!-- <el-button type="primary" @click="search">鎼滅储</el-button>-->
+<!-- <el-button @click="reset">閲嶇疆</el-button>-->
+<!-- </section>-->
+<!-- </el-form>-->
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:company:create', 'business:company:delete']">
- <li><el-button type="primary" v-permissions="['business:company:create']" @click="synchronous()">鍚屾</el-button></li>
+ <ul class="toolbar" v-permissions="['business:company:create', 'business:company:sync']">
+ <li><el-button type="primary" v-permissions="['business:company:create']" @click="$refs.OperaInternalCompanyWindow.open('鏂板缓浼佷笟',null,null)">鏂板缓</el-button></li>
+ <li><el-button @click="sort('top')" :loading="sorting" icon="el-icon-sort-up" v-permissions="['business:company:sort']">涓婄Щ</el-button></li>
+ <li><el-button @click="sort('bottom')" :loading="sorting" icon="el-icon-sort-down" v-permissions="['business:company:sort']">涓嬬Щ</el-button></li>
+ <!--<li><el-button type="primary" v-permissions="['business:company:sync']" :loading="loading" @click="synchronous()">鍚屾</el-button></li>-->
</ul>
<el-table
v-loading="isWorking.search"
- :data="tableData.list"
+ :data="list"
stripe
+ :tree-props="{children: 'childList',hasChildren: 'hasChildren'}"
+ row-key="id"
@selection-change="handleSelectionChange"
+ default-expand-all
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="缁勭粐鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="parentName" label="涓婄骇缁勭粐" min-width="100px"></el-table-column>
- <el-table-column prop="editDate" label="鏈�鍚庢洿鏂版椂闂�" min-width="100px"></el-table-column>
-<!-- <el-table-column-->
-<!-- v-if="containPermissions(['business:company:update', 'business:company:delete'])"-->
-<!-- label="鎿嶄綔"-->
-<!-- min-width="80"-->
-<!-- fixed="right"-->
-<!-- >-->
-<!-- <template slot-scope="{row}">-->
-<!-- <el-button type="text" @click="$refs.OperaInternalCompanyWindow.open('缂栬緫浼佷笟淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>-->
-<!-- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button>-->
-<!-- </template>-->
-<!-- </el-table-column>-->
+ <el-table-column prop="name" label="缁勭粐绫诲瀷" min-width="100px">
+ <template scope="{row}">
+ <span v-if="row.type == 0">鐩稿叧鏂圭粍缁�</span>
+ <span v-if="row.type == 1">鍐呴儴缁勭粐</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="companyPath" label="缁勭粐璺緞" min-width="100px"></el-table-column>
+ <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="editDate" label="鏈�鍚庢洿鏂版椂闂�" min-width="100px"></el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ width="230"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.OperaInternalCompanyWindow.open('缂栬緫浼佷笟淇℃伅',{ id: row.parentId,name:row.parentName,companyPath:row.parentCompanyPath}, row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.OperaInternalCompanyWindow.open('鏂板缓瀛愮骇', row,null)" icon="el-icon-plus">鏂板缓瀛愮骇</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
</el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
</template>
<!-- 鏂板缓/淇敼 -->
-<!-- <OperaInternalCompanyWindow ref="OperaInternalCompanyWindow" @success="handlePageChange"/>-->
+ <OperaInternalCompanyWindow ref="OperaInternalCompanyWindow" :list="list" @success="handlePageChange"/>
</TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { companySync } from '@/api/business/company'
-// import OperaInternalCompanyWindow from '@/components/business/OperaInternalCompanyWindow'
+import { companySync, sort } from '@/api/business/company'
+import OperaInternalCompanyWindow from '@/components/business/OperaInternalCompanyWindow'
export default {
name: 'internalCompany',
extends: BaseTable,
- components: { TableLayout, Pagination },
+ components: { TableLayout, OperaInternalCompanyWindow },
data () {
return {
// 鎼滅储
+ loading: false,
+ sorting: false,
searchForm: {
- name: '',
- parentName: '',
- type: 1
- }
+ // type: 1
+ },
+ list: [],
+ total: 0
}
},
created () {
@@ -82,12 +91,112 @@
this.search()
},
methods: {
+ // 椤电爜鍙樻洿澶勭悊
+ handlePageChange (pageIndex) {
+ this.__checkApi()
+ this.isWorking.search = true
+ this.api.fetchList(this.searchForm.type)
+ .then(data => {
+ this.list = data
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking.search = false
+ })
+ },
// 鍚屾淇℃伅
async synchronous () {
- const message = await companySync({})
- this.$message.success(message)
- this.search()
- }
+ this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
+ .then(() => {
+ this.loading = true
+ companySync({})
+ .then(res => {
+ this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
+ this.search()
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.loading = false
+ })
+ })
+ .catch(() => {})
+ },
+ // 鎺掑簭
+ sort (direction) {
+ if (this.sorting) {
+ return
+ }
+ if (this.tableData.selectedRows.length === 0) {
+ this.$tip.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
+ return
+ }
+ if (this.tableData.selectedRows.length > 1) {
+ this.$tip.warning('鎺掑簭鏃朵粎鍏佽閫夋嫨涓�鏉℃暟鎹�')
+ return
+ }
+ const menuId = this.tableData.selectedRows[0].id
+ // 鎵惧埌鑿滃崟鑼冨洿
+ let menuPool
+ for (const rootMenu of this.list) {
+ console.log(this.list)
+ const parent = this.__findParent(menuId, rootMenu)
+ if (parent != null) {
+ menuPool = parent.children
+ }
+ }
+ menuPool = menuPool || this.list
+ const menuIndex = menuPool.findIndex(menu => menu.id === menuId)
+ // 涓婄Щ鏍¢獙
+ if (direction === 'top' && menuIndex === 0) {
+ this.$tip.warning('鑿滃崟宸插埌椤堕儴')
+ return
+ }
+ // 涓嬬Щ鏍¢獙
+ if (direction === 'bottom' && menuIndex === menuPool.length - 1) {
+ this.$tip.warning('鑿滃崟宸插埌搴曢儴')
+ return
+ }
+ this.sorting = true
+ sort({
+ id: this.tableData.selectedRows[0].id,
+ direction
+ })
+ .then(() => {
+ if (direction === 'top') {
+ menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex - 1, 1)[0])
+ } else {
+ menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex + 1, 1)[0])
+ }
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.sorting = false
+ })
+ },
+ // 鏌ヨ鐖惰妭鐐�
+ __findParent (id, parent) {
+ if (parent.childList === 0) {
+ return
+ }
+ for (const menu of parent.childList) {
+ if (menu.id === id) {
+ return parent
+ }
+ if (menu.childList.length > 0) {
+ const m = this.__findParent(id, menu)
+ if (m != null) {
+ return m
+ }
+ }
+ }
+ return null
+ },
}
}
</script>
--
Gitblit v1.9.3