From dc4221341806e15f2a99520e7f763a8074c0eda1 Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期四, 18 四月 2024 17:13:40 +0800
Subject: [PATCH] 1
---
src/utils/request.js | 11 +
src/views/mdc/state-feedback.vue | 251 +++++++++++++++++++++++++++++------
src/views/mdc/quesheng.bd026700.png | 0
src/views/mdc/add-feedback.vue | 126 ++++++++++++++++++
4 files changed, 338 insertions(+), 50 deletions(-)
diff --git a/src/utils/request.js b/src/utils/request.js
index 3253bbf..262d2f1 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -212,12 +212,19 @@
axios({
method: 'delete',
url: url,
- params: data,
+ data: data,
...config
}).then((response) => {
resolve(response.data);
}).catch((error) => {
- reject(error);
+ if(error.status == 400) {
+ ElMessage({
+ message: error.data.msg,
+ type: 'warning',
+ })
+ }else {
+ reject(error);
+ }
})
})
},
diff --git a/src/views/mdc/add-feedback.vue b/src/views/mdc/add-feedback.vue
new file mode 100644
index 0000000..90c53f5
--- /dev/null
+++ b/src/views/mdc/add-feedback.vue
@@ -0,0 +1,126 @@
+<template>
+ <el-dialog :title="titleMap[mode]" v-model="visible" :width="570" destroy-on-close @closed="$emit('closed')">
+ <el-form :model="addDictForm" :rules="addDictRules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="鐘舵�佹椂闂�">
+ <el-date-picker v-model="addDictForm.date" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" align="right" value-format="YYYY-MM-DD HH:mm:ss" @change="dateChange">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鐘舵��" prop="wcs">
+ <el-select v-model="addDictForm.wcs" style="width: 100%">
+ <el-option v-for="item in feedBackStatusList" :key="item.code" :label="item.name" :value="item.code"/>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鎻忚堪">
+ <el-input v-model="addDictForm.description" placeholder="鎻忚堪" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <template #footer>
+ <el-button @click="visible=false" >鍙� 娑�</el-button>
+ <el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="dictSubmit()">淇� 瀛�</el-button>
+ </template>
+ </el-dialog>
+</template>
+
+<script>
+ export default {
+ emits: ['success', 'closed'],
+ props: ['feedBackStatusList','workstationId'],
+ data() {
+ return {
+ value1: true,
+ mode: "add",
+ titleMap: {
+ add: '鐘舵�佸弽棣�',
+ edit: '淇敼',
+ show: '鏌ョ湅'
+ },
+ visible: false,
+ isSaveing: false,
+ //琛ㄥ崟鏁版嵁
+ addDictForm: {
+ description: "",
+ date: "",
+ endTime: "",
+ startTime: "",
+ wcs: ""
+ },
+ //楠岃瘉瑙勫垯
+ addDictRules: {
+ wcs:[{required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'change'}]
+ }
+ }
+ },
+ mounted() {
+
+ },
+ methods: {
+ dateChange(val) {
+ this.addDictForm.startTime = val[0];
+ this.addDictForm.endTime = val[1];
+ },
+ //鏄剧ず
+ open(mode='add'){
+ this.mode = mode;
+ this.visible = true;
+ return this
+ },
+ //琛ㄥ崟鎻愪氦鏂规硶
+ dictSubmit(){
+ var obj = Object.assign({},this.addDictForm);
+ obj.workstationIds = [this.workstationId]
+ var that = this;
+ this.$refs.dialogForm.validate(async (valid) => {
+ if (valid) {
+ this.isSaveing = true;
+ this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/overwrite-feedback-check",obj).then(res=> {
+ that.isSaveing = false;
+ if(res.code == 200) {
+ if(res.data) {
+ that.$confirm(`鍙嶉鐨勬椂闂翠笌宸叉湁鍙嶉閲嶅彔锛屾槸鍚﹁鐩朻, '', {
+ type: 'warning'
+ }).then(() => {
+ that.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/start-feedback-by-no-immediate",obj).then(res=> {
+ if(res.code == 200) {
+ that.$message.success("鎿嶄綔鎴愬姛");
+ that.$emit('success', this.addDictForm, this.mode);
+ that.visible = false;
+ }
+ })
+ }).catch(() => {})
+ }else {
+ that.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/start-feedback-by-no-immediate",obj).then(res=> {
+ if(res.code == 200) {
+ that.$message.success("鎿嶄綔鎴愬姛");
+ that.$emit('success', this.addDictForm, this.mode);
+ that.visible = false;
+ }
+ })
+ }
+ }else {
+ this.$alert(res.message, "鎻愮ず", {type: 'error'});
+ }
+ })
+ }else{
+ return false;
+ }
+ })
+ },
+ //琛ㄥ崟娉ㄥ叆鏁版嵁
+ setData(data){
+ //鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+ //Object.assign(this.addDictForm, data);
+ }
+ }
+ }
+</script>
+
+<style>
+</style>
diff --git a/src/views/mdc/quesheng.bd026700.png b/src/views/mdc/quesheng.bd026700.png
new file mode 100644
index 0000000..49819d6
--- /dev/null
+++ b/src/views/mdc/quesheng.bd026700.png
Binary files differ
diff --git a/src/views/mdc/state-feedback.vue b/src/views/mdc/state-feedback.vue
index 7223619..27adbd7 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-18 17:10:39
* @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,123 @@
},
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) {
+ this.feedBackStatusList.push(res.data[0]);
+ this.feedBackStatusList.push(res.data[1]);
+ }
+ })
+ },
+ 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 +223,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 = {
@@ -127,9 +245,34 @@
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(); //娓叉煋鍙嶉鍒楄〃
+ })
+
}
+ }
+ })
+ },
+ getlist() {
+ var obj = {
+ workstationId: this.lastLevelId,
+ }
+ 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) {
+ this.searchDataList = res.data.records;
}
})
},
@@ -149,7 +292,10 @@
})
},
addData() {
-
+ this.dialog.save = true
+ this.$nextTick(() => {
+ this.$refs.saveDialog.open()
+ })
},
delData() {
if(this.searchSelection.length == 0) {
@@ -159,17 +305,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 +362,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