From 8b2243f0ac0d9ef253393a864aca550fdd8f7017 Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期五, 27 十二月 2024 18:24:13 +0800
Subject: [PATCH] UI页签定义添加按序号排序
---
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue | 347 ++++++++++++++++++++++++++++++++-------------------------
1 files changed, 196 insertions(+), 151 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue
index 424bdb9..5552afc 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue
@@ -1,81 +1,55 @@
<template>
- <el-container>
+ <basic-container>
+ <avue-crud
+ ref="useCrud"
+ :data="data"
+ :option="option"
+ :page.sync="page"
+ :table-loading="loading"
+ @selection-change="selectChange"
+ @row-click="rowClickHandler"
+ @refresh-change="handleRefresh"
+ @size-change="sizeChange"
+ @current-change="currentChange"
+ >
+ <template slot="menuLeft">
+ <el-button v-if="permissionList.addBtn" icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
+ </el-button>
+ <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎
+ </el-button>
+ <el-button v-if="permissionList.importBtn" icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆
+ </el-button>
+ <el-button v-if="permissionList.exportBtn" icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
+ </el-button>
+ <el-button v-if="permissionList.viewTheScopeBtn" icon="el-icon-view" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
+ </el-button>
+ </template>
- <el-aside>
- <basic-container>
- <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
- <div class="headerCon">
- <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
- </el-button>
- <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼
- </el-button>
- <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎
- </el-button>
- <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
- </el-button>
- <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆
- </el-button>
- <el-button plain size="small" style="width: 100px;text-align: center" type="primary"
- @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
- </el-button>
- </div>
- <!-- 宸︿晶鏍� -->
- <div style="height: calc(100vh - 280px);">
- <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
- <span slot-scope="{ node, data }" class="el-tree-node__label">
- <span style="font-size: 15px">
- <i class="el-icon-s-promotion"></i>
- {{ (node || {}).label }}
- </span>
- </span>
- </avue-tree>
- </div>
- </div>
- </basic-container>
- </el-aside>
+ <template slot="menu" slot-scope="{row,index}">
+ <el-button v-if="permissionList.editBtn" icon="el-icon-edit" plain size="small" type="text" @click="editClickHandler(row)">淇敼
+ </el-button>
+ <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="text" @click="delRowClickHandler(row)">鍒犻櫎
+ </el-button>
+ </template>
- <el-main>
- <basic-container>
- <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
- <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
- :labelStyle="descriptionOption.labelStyle">
- <template slot="label">
- <i :class="icons.id"></i>
- 鍚嶇О
- </template>
- <el-tag v-if="nodeRow.id">{{ nodeRow.id }}</el-tag>
- </el-descriptions-item>
- <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
- :labelStyle="descriptionOption.labelStyle">
- <template slot="label">
- <i :class="icons.name"></i>
- 鏍囩
- </template>
- <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
- </el-descriptions-item>
- <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
- :labelStyle="descriptionOption.labelStyle">
- <template slot="label">
- <i :class="icons.desc"></i>
- 鎻忚堪
- </template>
- <el-tag v-if="nodeRow.description">{{ nodeRow.description }}</el-tag>
- </el-descriptions-item>
- </el-descriptions>
- </basic-container>
- </el-main>
+ <template #icon="{ row }">
+ <span class="avue-icon">
+ <icon-show :name="row.imagePath"></icon-show>
+ </span>
+ </template>
+ </avue-crud>
- <!-- 鏂板 淇敼 -->
+ <!-- 鏂板 淇敼 -->
<el-dialog
v-dialogDrag
:title="dialogTitle === 'add' ? '鍒涘缓' : '淇敼'"
:visible.sync="visible"
append-to-body="true"
class="avue-dialog"
- width="40%"
+ width="500px"
@close="visibleCloseHandler"
>
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px" size="small">
<el-row>
<el-col :span="24">
<el-form-item label="鍚嶇О锛�" prop="id">
@@ -88,6 +62,12 @@
</el-form-item>
</el-col>
<el-col :span="24">
+ <el-form-item label="鍥炬爣锛�" prop="imagePath">
+ <input-icon v-model="form.imagePath" placeholder="璇烽�夋嫨鍥炬爣">
+ </input-icon>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
<el-form-item label="鎻忚堪锛�" prop="description">
<el-input v-model="form.description" :rows="2" type="textarea"></el-input>
</el-form-item>
@@ -95,16 +75,16 @@
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
- <el-button @click="visibleCloseHandler">鍙� 娑�</el-button>
- <el-button type="primary" @click="addSaveHandler">纭� 瀹�</el-button>
+ <el-button size="small" type="primary" @click="addSaveHandler">纭� 瀹�</el-button>
+ <el-button size="small" @click="visibleCloseHandler">鍙� 娑�</el-button>
</span>
</el-dialog>
- <!-- 瀵煎叆 -->
+ <!-- 瀵煎叆 -->
<upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆"
- @updata="getTreeList"></upload-file>
+ @updata="getList"></upload-file>
- <!-- 鏌ョ湅浣跨敤鑼冨洿 -->
+ <!-- 鏌ョ湅浣跨敤鑼冨洿 -->
<el-dialog
v-dialogDrag
:visible.sync="checkViewVisible"
@@ -123,20 +103,48 @@
>
</avue-crud>
</el-dialog>
-
- </el-container>
-
+ </basic-container>
</template>
<script>
import {gridStatus, addSave, editSave, deleteStatus, exportStatus, listUsed} from "@/api/modeling/statusPool/api";
import func from "@/util/func";
import basicOption from "@/util/basic-option";
+import {mapGetters} from "vuex";
export default {
name: "index",
data() {
return {
+ loading: false,
+ data: [],
+ option: {
+ ...basicOption,
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ calcHeight: -60,
+ column: [
+ {
+ label: '鍚嶇О',
+ prop: 'id',
+ sortable: true,
+ },
+ {
+ label: '鍥炬爣',
+ prop: 'icon'
+ },
+ {
+ label: '鏍囩',
+ prop: 'name',
+ sortable: true,
+ },
+ {
+ label: '鎻忚堪',
+ prop: 'description',
+ },
+ ]
+ },
checkViewVisible: false,
checkViewData: [],
checkViewDataSearch: [],
@@ -148,6 +156,7 @@
searchMenuSpan: 8,
refreshBtn: false,
selection: false,
+ header:false,
column: [
{
label: '鍚嶇О',
@@ -183,47 +192,77 @@
]
},
visible: false,
- treeOption: {
- height: 'auto',
- defaultExpandAll: false,
- menu: false,
- addBtn: false,
- props: {
- label: 'id',
- value: 'id',
- children: 'children'
- }
- },
- treeData: [],
- nodeRow: {},
- descriptionOption: {
- labelStyle: 'text-align:center;width:120px',
- contentStyle: 'width:240px;text-align:center;word-break;break-all;'
- },
- icons: {
- id: 'el-icon-finished',
- name: 'el-icon-tickets',
- desc: 'el-icon-chat-line-square'
+ selectList: [],
+ lastIndex: null,
+ page: {
+ currentPage: 1,
+ pageSize: 15,
+ total: 0,
+ pageSizes: [15, 30, 50, 100],
},
}
},
+ computed:{
+ ...mapGetters(["permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
+ delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
+ editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
+ exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false),
+ importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false),
+ viewTheScopeBtn: this.vaildData(this.permission[this.$route.query.id].viewTheScope, false),
+ };
+ },
+ },
created() {
- this.getTreeList();
+ this.getList();
},
methods: {
- // 宸︿晶鏍戣姹�
- getTreeList() {
- gridStatus({page: 1, limit: -1}).then(res => {
+ getList() {
+ gridStatus(this.page.currentPage, this.page.pageSize).then(res => {
const data = res.data.data;
- this.treeData = data;
- }).catch(err => {
- this.$message.error(err)
+ this.data = data;
+ this.page.total = res.data.total;
+ this.loading = false;
});
},
- // 鏍戣妭鐐圭偣鍑讳簨浠�
- nodeClick(row) {
- this.nodeRow = row;
+ // 琛ㄦ牸鍒锋柊
+ handleRefresh() {
+ this.getList();
+ },
+
+ // 琛ㄦ牸澶氶��
+ selectChange(row) {
+ this.selectList = row;
+ },
+
+ // 鏉℃暟
+ sizeChange(val) {
+ this.page.pageSize = val;
+ this.getList();
+ },
+
+ // 椤电爜
+ currentChange(val) {
+ this.page.currentPage = val;
+ this.getList();
+ },
+
+ // 琛屽崟閫�
+ rowClickHandler(row) {
+ func.rowClickHandler(
+ row,
+ this.$refs.useCrud,
+ this.lastIndex,
+ (newIndex) => {
+ this.lastIndex = newIndex;
+ },
+ () => {
+ this.selectList = [];
+ }
+ );
},
// 鍒涘缓鎸夐挳
@@ -233,19 +272,15 @@
},
// 缂栬緫鎸夐挳
- editClickHandler() {
- if (func.isEmptyObject(this.nodeRow)) {
- this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
- return;
- }
+ editClickHandler(row) {
this.visible = true;
this.dialogTitle = 'edit';
- this.form = this.nodeRow;
+ this.form = {...row};
},
// 鍒犻櫎
delClickHandler() {
- if (func.isEmptyObject(this.nodeRow)) {
+ if (this.selectList.length <= 0) {
this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
return;
}
@@ -254,12 +289,34 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- const list = [this.nodeRow];
+ this.loading = true;
+ deleteStatus(this.selectList).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.obj);
+ this.getList();
+ }
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+ },
+
+ // 琛屽崟涓垹闄�
+ delRowClickHandler(row) {
+ this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ const list = [row];
+ this.loading = true;
deleteStatus(list).then(res => {
if (res.data.code === 200) {
this.$message.success(res.data.obj);
- this.getTreeList();
- this.nodeRow = {};
+ this.getList();
}
})
}).catch(() => {
@@ -286,28 +343,32 @@
// 鍒涘缓鎴栫紪杈戜繚瀛�
addSaveHandler() {
const saveFunction = this.dialogTitle === 'add' ? addSave : editSave;
-
- saveFunction(this.form).then(res => {
- if (res.data.code === 200) {
- this.$message.success(res.data.obj);
- this.getTreeList();
- this.visible = false;
+ this.$refs.form.validate((valid) => {
+ if (valid) {
+ saveFunction(this.form).then(res => {
+ if (res.data.code === 200) {
+ this.$message.success(res.data.obj);
+ this.loading = true;
+ this.getList();
+ this.visible = false;
+ } else {
+ this.$message.error(res.data.obj);
+ }
+ })
} else {
- this.$message.error(res.data.obj);
+ return false;
}
- }).catch(error => {
- this.$message.error(error);
});
},
// 瀵煎嚭
exportClickHandler() {
- if (func.isEmptyObject(this.nodeRow)) {
+ if (this.selectList.length <= 0) {
this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
return;
}
- exportStatus({statusOids: this.nodeRow.oid}).then(res => {
+ exportStatus({statusOids: this.selectList.map(item => item.oid).join(',')}).then(res => {
func.downloadFileByBlobHandler(res);
this.$message.success('瀵煎嚭鎴愬姛');
}).catch(err => {
@@ -322,17 +383,22 @@
// 鏌ョ湅浣跨敤鑼冨洿
checkViewClickHandler() {
- if (func.isEmptyObject(this.nodeRow)) {
+ if (this.selectList.length <= 0) {
this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
return;
}
- listUsed({oid: this.nodeRow.oid}).then(res => {
+
+ if (this.selectList.length > 1) {
+ this.$message.error('鍙兘閫夋嫨涓�鏉℃暟鎹紒');
+ return;
+ }
+ listUsed({oid: this.selectList[0].oid}).then(res => {
if (res.data.code === 200) {
this.checkViewVisible = true;
const data = res.data.data;
data.forEach(item => {
item.name = item.id + `( ${item.name} )`;
- item.TreeId = this.nodeRow.id;
+ item.TreeId = this.selectList[0].oid;
})
this.checkViewData = res.data.data;
this.checkViewDataSearch = res.data.data;
@@ -347,7 +413,6 @@
this.checkViewData = this.checkViewDataSearch;
return done();
}
- ;
this.checkViewData = this.checkViewData.filter(item => {
return item.name && item.name.includes(name);
@@ -371,31 +436,11 @@
.el-scrollbar__wrap {
overflow: auto !important;
}
-}
-.headerCon {
- display: flex;
- flex-wrap: wrap;
- margin-bottom: 5px;
-
- .el-button + .el-button {
- margin-left: 5px;
- }
-
- .el-button {
- margin-top: 5px;
- }
-}
-
-.headerCon > .el-button:nth-child(4) {
- margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(7) {
- margin-left: 0;
}
.upload-demo {
margin-left: 20px;
}
+
</style>
--
Gitblit v1.9.3