From 0f59aa5500621364d83b2a26bfaa69b7840461f5 Mon Sep 17 00:00:00 2001
From: lzhe <181968431@qq.com>
Date: 星期一, 03 六月 2024 23:47:46 +0800
Subject: [PATCH] 1
---
src/views/mdc/state-feedback.vue | 260 ++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 200 insertions(+), 60 deletions(-)
diff --git a/src/views/mdc/state-feedback.vue b/src/views/mdc/state-feedback.vue
index 7223619..885d190 100644
--- a/src/views/mdc/state-feedback.vue
+++ b/src/views/mdc/state-feedback.vue
@@ -2,7 +2,7 @@
* @Author: lzhe lzhe@example.com
* @Date: 2024-03-26 10:28:33
* @LastEditors: lzhe lzhe@example.com
- * @LastEditTime: 2024-04-17 17:52:50
+ * @LastEditTime: 2024-04-19 18:18:19
* @FilePath: /smart-web/src/views/master/person/main/index.vue
* @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@@ -10,55 +10,80 @@
<div class="aposcope-main">
<div class="aposcope-left">
<div class="left-title">宸ヤ綅</div>
- <el-tree :data="tableData" row-key="id" default-expand-all :expand-on-click-node="false" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef"/>
+ <el-tree :data="tableData" node-key="id" default-expand-all :expand-on-click-node="false" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef" highlight-current />
</div>
<div class="aposcope-right">
- <div>
- <!-- <el-button type="primary" @click="addData">+ 娣诲姞</el-button> -->
- <!-- <el-button type="danger" plain @click="delData">鍒犻櫎</el-button> -->
- <!-- <el-date-picker
- v-model="value2"
- type="datetimerange"
- :picker-options="pickerOptions"
- range-separator="鑷�"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡"
- align="right">
- </el-date-picker> -->
+ <div class="right-top">
+ <div>
+ <el-button type="primary" @click="addData">鍙嶉</el-button>
+ <el-button type="danger" plain @click="delData">鎵归噺鍒犻櫎</el-button>
+ </div>
+ <div>
+ <el-select v-model="searchData.feedBackStatus" multiple style="width: 185px;margin-right: 8px;;" @change="feedBackStatusChange">
+ <el-option v-for="item in feedBackStatusList" :key="item.code" :label="item.name" :value="item.code"/>
+ </el-select>
+ <el-date-picker v-model="searchData.date" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" align="right" value-format="YYYY-MM-DD HH:mm:ss" @change="dateChange" style="vertical-align: middle;">
+ </el-date-picker>
+ </div>
</div>
- <el-table ref="searchDataListRef" :data="searchDataList" border style="width: 100%;margin-top: 20px;" class="multipleTableRef" @selection-change="searchHandleSelectionChange">
+ <div class="right-content" v-if="searchDataList.length == 0">
+ <img src="./quesheng.bd026700.png" />
+ <div>
+ <span>鏆傛棤鍙嶉鐘舵�佹暟鎹�</span>
+ </div>
+ </div>
+ <el-table ref="searchDataListRef" v-if="searchDataList.length != 0" :data="searchDataList" border style="width: 100%;margin-top: 20px;" class="multipleTableRef" @selection-change="searchHandleSelectionChange">
<el-table-column type="selection" width="55" />
- <el-table-column prop="moduleCode" label="宸ヤ綅鍚嶇О"></el-table-column>
- <el-table-column prop="controllerCode" label="鐘舵��"></el-table-column>
- <el-table-column prop="scopeName" label="鎻忚堪"></el-table-column>
- <el-table-column prop="httpMethod" label="鎸佺画鏃堕暱"></el-table-column>
- <el-table-column prop="scopePath" label="鐘舵�佹椂闂�"></el-table-column>
- <el-table-column prop="scopePath" label="鍙嶉鏃堕棿"></el-table-column>
+ <el-table-column prop="workstationName" label="宸ヤ綅鍚嶇О"></el-table-column>
+ <el-table-column prop="wcsDesc" label="鐘舵��"></el-table-column>
+ <el-table-column prop="feedbackDesc" label="鎻忚堪"></el-table-column>
+ <el-table-column prop="httpMethod" label="鎸佺画鏃堕暱">
+ <template #default="scope">
+ <span>{{sumTime(scope.row.startTime,scope.row.endTime)}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="scopePath" label="鐘舵�佹椂闂�">
+ <template #default="scope">
+ <span>{{scope.row.startTime}}~{{ scope.row.endTime }}</span>
+ </template>
+ </el-table-column>
<el-table-column fixed="right" label="鎿嶄綔">
<template #default="scope">
- <el-button text type="primary" size="small" @click="showDrawer(scope.row, scope.$index)">鍒犻櫎</el-button>
+ <el-button text type="primary" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
+ <save-dialog v-if="dialog.save" ref="saveDialog" :feedBackStatusList="feedBackStatusList" :workstationId="lastLevelId" @success="addfeedbackSuccess" @closed="dialog.save=false"></save-dialog>
</template>
<script>
+ import { useTransitionFallthroughEmits } from 'element-plus';
+ import saveDialog from './add-feedback'
export default {
name: "state-feedback",
data(){
return {
+ dialog: {
+ save: false
+ },
+ lastLevelId: "",
+ feedBackStatusList: [],
+ current: "1",
+ size: "15",
searchData: {
- menuId: "",
- size: "15",
- current: "1"
+ feedBackStatus: [],
+ date: [],
+ endDate: "",
+ startDate: ""
},
searchDataList: [], //鍙充晶鏁版嵁list
aList: [],
defalutProps: {
label: 'title',
children: 'children',
- isLeaf: 'hasChildren'
+ isLeaf: 'hasChildren',
+ disabled: 'disabled'
},
parentId: "0",
tableData: [],
@@ -70,41 +95,126 @@
},
mounted(){
this.getTreeList();
+ this.getfeedBackStatusList(); //鑾峰彇鐘舵�乴ist
},
components: {
-
+ saveDialog
},
methods: {
+ table_del(row) {
+ this.$confirm(`纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?`, '', {
+ type: 'warning'
+ }).then(() => {
+ var arr = [row.id]
+ this.$HTTP.delete("/api/blade-cps/workstation-wcs-feedback",arr).then(res=> {
+ if(res.code == 200) {
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getlist();
+ }
+ })
+ }).catch(() => {
+
+ })
+ },
+ addfeedbackSuccess() {
+ this.getlist();
+ },
+ getfeedBackStatusList() {
+ this.$HTTP.get("/api/blade-cps/global_wcs/wcs-achievements").then(res=> {
+ if(res.code == 200) {
+ res.data.forEach(item=> {
+ if(item.type == "4") {
+ this.feedBackStatusList.push(item);
+ }
+ })
+ }
+ })
+ },
+ feedBackStatusChange(val) {
+ this.getlist();
+ },
+ dateChange(val) {
+ this.searchData.startDate = val[0];
+ this.searchData.endDate = val[1];
+ this.getlist();
+ },
searchHandleSelectionChange(selection) {
this.searchSelection = selection;
},
handleClose(done) {
done();
},
+ sumTime(startTime,endTime) {
+ // 灏嗗瓧绗︿覆杞崲涓篋ate瀵硅薄
+ var startDate = new Date(startTime);
+ var endDate = new Date(endTime);
+
+ // 璁$畻鏃堕棿宸紙姣锛�
+ var timeDiff = endDate - startDate;
+
+ // 灏嗘椂闂村樊杞崲涓哄ぉ鏁般�佸皬鏃舵暟銆佸垎閽熸暟鍜岀鏁�
+ var diffDays = Math.floor(timeDiff / (1000 * 60 * 60 * 24)); // 澶�
+ timeDiff %= 1000 * 60 * 60 * 24; // 鍓╀綑姣鏁�
+ var diffHours = Math.floor(timeDiff / (1000 * 60 * 60)); // 灏忔椂
+ timeDiff %= 1000 * 60 * 60; // 鍓╀綑姣鏁�
+ var diffMinutes = Math.floor(timeDiff / (1000 * 60)); // 鍒嗛挓
+ timeDiff %= 1000 * 60; // 鍓╀綑姣鏁�
+ var diffSeconds = Math.floor(timeDiff / 1000); // 绉�
+ var d = diffDays == 0?"":diffDays + "澶�";
+ return d + diffHours + "灏忔椂 " + diffMinutes + "鍒嗛挓 " + diffSeconds + "绉�"
+ },
handleNodeClick(data) {
- // var obj = {
- // groupCategory: 1,
- // groupType: "group_workstation"
- // }
- // this.$HTTP.post("/api/blade-cps/group/groupWorkstation/type",obj).then(res=> {
- // if(res.code == 200) {
- // this.searchDataList = res.data.records;
- // }
- // })
+ if(data.code) {
+ this.lastLevelId = data.id;
+ var obj = {
+ workstationId: this.lastLevelId,
+ }
+ if(this.searchData.feedBackStatus.length != 0) {
+ obj.feedBackStatus = this.searchData.feedBackStatus;
+ }
+ if(this.searchData.endDate) {
+ obj.endDate = this.searchData.endDate;
+ }
+ if(this.searchData.startDate) {
+ obj.startDate = this.searchData.startDate;
+ }
+ this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/page?current=1&size=15",obj).then(res=> {
+ if(res.code == 200) {
+ this.searchDataList = res.data.records;
+ }
+ })
+ }
+ },
+ getLastLevelIds(tree) {
+ if (tree.length === 0) return ""; // 濡傛灉娌℃湁鏍硅妭鐐癸紝杩斿洖绌�
+ const lastLevelIds = [];
+ const lastLevelCodes = [];
+ function traverseTree(node) {
+ if(!node.code) {
+ lastLevelCodes.push(node.id);
+ }
+ if (node.children.length > 0) {
+ node.children.forEach(traverseTree); // 閫掑綊閬嶅巻瀛愯妭鐐�
+ } else {
+ if(node.code) {
+ lastLevelIds.push(node.id); // 鏈塩ode鎵嶈
+ }
+ }
+ }
+ // 鍙亶鍘嗙涓�涓牴鑺傜偣
+ traverseTree(tree[0]);
+ return {lastLevelCodes,lastLevelId:lastLevelIds[0]}; // 杩斿洖lastLevelCodes锛氭病鏈塩ode鐨勬暟缁勩�俵astLevelId锛氭湁code鐨勭涓�涓猧d
},
buildTree(items) {
const idMap = {};
const tree = [];
-
// 绗竴姝ワ細鍒涘缓id鍒板璞$殑鏄犲皠
items.forEach(item => {
idMap[item.id] = { ...item, children: [] };
- });
-
+ });
// 绗簩姝ワ細鏋勫缓鏍戝舰缁撴瀯
items.forEach(item => {
const currentNode = idMap[item.id];
-
// 濡傛灉parentId涓�0锛岃鏄庢槸鏍硅妭鐐�
if (item.parentId === 0) {
tree.push(currentNode);
@@ -116,8 +226,19 @@
}
}
});
-
return tree;
+ },
+ addTreeDisable(treeData) {
+ var tree = [];
+ treeData.forEach(item=> {
+ if(item.code) {
+ item.disabled = false;
+ }else {
+ item.disabled = true;
+ }
+ tree.push(item);
+ })
+ return tree;
},
getTreeList(flag) {
var obj = {
@@ -126,30 +247,40 @@
}
this.$HTTP.post("/api/blade-cps/group/groupWorkstation/type",obj).then(res=> {
if(res.code == 200) {
- if (res.code == 200) {
- this.tableData = this.buildTree(res.data);
- console.log(this.buildTree(res.data))
- }
+ var treeDisabled = this.addTreeDisable(res.data);
+ this.tableData = this.buildTree(treeDisabled); //浠庢墎骞冲寲鍙樹负鏍戠姸缁撴瀯
+ this.$nextTick(()=> {
+ this.lastLevelId = this.getLastLevelIds(this.tableData).lastLevelId;
+ this.$refs.treeRef.setCurrentKey(this.lastLevelId); //绗竴涓妭鐐圭殑绗竴涓瓙鑺傜偣鏈�鍚庝竴绾ч粯璁ら�変腑
+ this.getlist(); //娓叉煋鍙嶉鍒楄〃
+ })
}
})
},
- loadNode(node, resolve, reject) {
- if(node.data.id) {
- this.parentId = node.data.id;
- }else {
- this.parentId = '0';
+ getlist() {
+ var obj = {
+ workstationId: this.lastLevelId,
}
- this.$HTTP.get("/api/blade-system/menu/lazy-list",{parentId: this.parentId}).then(res=> {
+ if(this.searchData.feedBackStatus != 0) {
+ obj.feedBackStatus = this.searchData.feedBackStatus;
+ }
+ if(this.searchData.endDate) {
+ obj.endDate = this.searchData.endDate;
+ }
+ if(this.searchData.startDate) {
+ obj.startDate = this.searchData.startDate;
+ }
+ this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/page?current=1&size=15",obj).then(res=> {
if(res.code == 200) {
- res.data.forEach(node => {
- node.hasChildren = !node.hasChildren;
- });
- resolve(res.data);
+ this.searchDataList = res.data.records;
}
})
},
addData() {
-
+ this.dialog.save = true
+ this.$nextTick(() => {
+ this.$refs.saveDialog.open()
+ })
},
delData() {
if(this.searchSelection.length == 0) {
@@ -159,17 +290,21 @@
});
return;
}
- var selStr = "";
+ var sel = [];
this.searchSelection.map(item=> {
- selStr += item.id + ","
+ sel.push(item.id);
})
- selStr = selStr.replace(/,$/, '');
var that = this;
+ this.$HTTP.delete("/api/blade-cps/workstation-wcs-feedback",sel).then(res=> {
+ if(res.code == 200) {
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getlist();
+ }
+ })
}
}
}
</script>
-
<style scoped>
.aposcope-main {
display: flex;
@@ -212,4 +347,9 @@
color: #409eff;
cursor: pointer;
}
+.right-top {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
</style>
\ No newline at end of file
--
Gitblit v1.9.3