From dcf9c9e0410fe1186239e3f8d6f7bdc789c08010 Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期三, 05 六月 2024 18:00:39 +0800
Subject: [PATCH] 1

---
 src/views/notification/business.vue |  258 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 230 insertions(+), 28 deletions(-)

diff --git a/src/views/notification/business.vue b/src/views/notification/business.vue
index 532e799..1eb3d8b 100644
--- a/src/views/notification/business.vue
+++ b/src/views/notification/business.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-19 18:18:19
+ * @LastEditTime: 2024-05-10 12:08:41
  * @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
 -->
@@ -23,16 +23,16 @@
 			<div class="right-content">
 				<div class="content-title">
 					<span class="ct-span">閫氱煡鏂瑰紡</span>
-					<el-icon><Setting /></el-icon>
+					<el-icon @click="gojob"><Setting /></el-icon>
 				</div>
 				<el-row class="template-content-box">
-					<el-col :span="8" v-for="item in contentData">
-						<el-checkbox v-model="checked1" label="閫夋嫨" size="large" />
+					<el-col :span="8" v-for="(item,index) in contentData">
+						<el-checkbox v-model="item.checked" label="閫夋嫨" size="large" @change="checkboxChange($event,index,item)"/>
 						<div class="box-top">
-							<div>{{item.notifyName}}</div>
-							<div>{{item.notifyTemplateName}}</div>
-							<div>
-								<span><el-icon><EditPen /></el-icon>缂栬緫</span>
+							<div class="box-top-name">{{item.notifyName}}</div>
+							<div class="box-top-title">{{item.notifyTemplateName}}</div>
+							<div class="box-top-btn">
+								<span @click="table_edit(item, index)"><el-icon><EditPen /></el-icon>缂栬緫</span>
 								<span><el-icon><Delete /></el-icon>鍒犻櫎</span>
 							</div>
 						</div>
@@ -42,18 +42,32 @@
 					<span class="ct-span">榛樿瀵硅薄</span>
 				</div>
 				<div class="template-content-box">
-				    <el-radio-group v-model="radio1">
+				    <el-radio-group v-model="radio1" @change="radio1Change">
 					    <el-radio :label="1">閮ㄩ棬</el-radio>
 					    <el-radio :label="2">鍛樺伐</el-radio>
 					</el-radio-group>
 					<div class="content">
-						<el-button type="primary" plain>鐐瑰嚮娣诲姞+</el-button>
+						<el-button type="primary" plain @click="addOrganization" v-show="isaddOrganization">鐐瑰嚮娣诲姞+</el-button>
+						<!-- 閮ㄩ棬閫夋嫨 -->
+						<span v-if="radio1 == 1" v-for="(item,index) in organizationLi" class="tagItem">{{item.name}}<el-icon @click="delOrganizationLi(index)" style="cursor: pointer;"><Close /></el-icon></span>
+						<el-select v-if="radio1 == 1" v-show="!isaddOrganization" v-model="organization" style="width: 20%" @change="organizationChange">
+							<el-option v-for="item in organizationList" :key="item.parentId" :label="item.name" :value="item.parentId"/>
+						</el-select>
+						<!-- 鍛樺伐閫夋嫨 -->
+						<span v-if="radio1 == 2" v-for="(item,index) in employeeLi" class="tagItem">{{item.name}}<el-icon @click="delEmployeeLi(index)" style="cursor: pointer;"><Close /></el-icon></span>
+						<el-select v-if="radio1 == 2" v-show="!isaddOrganization" v-model="employee" style="width: 20%" @change="employeeChange">
+							<el-option v-for="item in employeeList" :key="item.id" :label="item.organizationName + '-' + item.name" :value="item.id"/>
+						</el-select>
+					</div>
+					<div class="bottom-btn">
+						<el-button @click="resetData">閲嶇疆</el-button>
+						<el-button type="primary" :loading="isSaveing" @click="saveSubmit">淇濆瓨</el-button>
 					</div>
 				 </div>
 			</div>
 		</div>
 	</div>
-<!-- 	<save-dialog v-if="dialog.save" ref="saveDialog" :feedBackStatusList="feedBackStatusList" :workstationId="lastLevelId" @success="addfeedbackSuccess" @closed="dialog.save=false"></save-dialog> -->
+	<save-dialog v-if="dialog.save" ref="saveDialog" @success="addbusinessSuccess" @closed="dialog.save=false"></save-dialog>
 </template>
 <script>
 	import * as ElementPlusIconsVue from '@element-plus/icons-vue'
@@ -61,11 +75,20 @@
 	for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
 	    icons.push(key)
 	}
-	// import saveDialog from './add-feedback'
+	import saveDialog from './editbusiness'
 	export default {
 		name: "business",
 		data(){
 			return {
+				businessKey: "",
+				isSaveing: false,
+				employeeLi: [],
+				organizationLi: [],
+				isaddOrganization: true,
+				organizationList: [],
+				employeeList: [],
+				organization: "",
+				employee: "",
 				radio1: 1,
 				checked1: true,
 				tableData: [],
@@ -89,35 +112,170 @@
 		},
 		mounted(){
 			this.getTreeList();
-			this.getbusiness();
+			this.getgroupType();
+			this.getEmployeeList();
 		},
 		components: {
-			...ElementPlusIconsVue
-			//saveDialog
+			...ElementPlusIconsVue,saveDialog
 	    },
 		methods: {
-			getbusiness() {
-				this.$HTTP.get("/api/blade-notify/business-notify?businessKey=maintenance").then(res=> {
+			gojob() {
+				window.open('http://116.63.148.72:8080/xxl-job-admin');
+			},
+			checkboxChange(e,index,item) {
+				var obj = {
+					businessKey: item.businessKey,
+					notifyType: item.notifyType,
+					status: e?"1":"0"
+				}
+				this.$HTTP.put("/api/blade-notify/business-notify/changeStatus",obj).then(res=> {
 					if(res.code == 200) {
+						this.getbusiness();  //鍒锋柊鍒楄〃
+					}
+				})
+			},
+			saveSubmit() {
+				var empIds = [];
+				var orgIds = [];
+				this.employeeLi.forEach(item=> {
+					empIds.push(item.id);
+				})
+				this.organizationLi.forEach(item=> {
+					orgIds.push(item.id);
+				})
+				var obj = {
+					businessKey: this.businessKey,empIds,orgIds
+				}
+				this.$HTTP.post("/api/blade-notify/business-notify",obj).then(res=> {
+					if(res.code == 200) {
+						this.$message.success("淇濆瓨鎴愬姛");
+					}
+				})
+			},
+			resetData() {
+				this.employeeLi = [];
+				this.organizationLi = [];
+			},
+			radio1Change(val) {
+				if(val == 1) {
+					this.getgroupType();
+				}else if(val == 2) {
+					this.getEmployeeList();
+				}
+			},
+			addOrganization() {
+				this.isaddOrganization = false;
+			},
+			organizationChange(val) {
+				var flag = this.organizationLi.some(function(item) {
+				    return item.parentId === val;
+				});
+				this.organizationList.forEach(item=> {
+					if(item.parentId == val && !flag) {
+						this.organizationLi.push(item);
+					}
+				})
+			},
+			employeeChange(val) {
+				var flag = this.employeeLi.some(function(item) {
+				    return item.id === val;
+				});
+				this.employeeList.forEach(item=> {
+					if(item.id == val && !flag) {
+						this.employeeLi.push(item);
+					}
+				})
+			},
+			delOrganizationLi(index) {
+				this.organizationLi.splice(index,1);
+			},
+			delEmployeeLi(index) {
+				this.employeeLi.splice(index,1);
+			},
+			getgroupType() {
+				this.$HTTP.get("/api/blade-cps/organization/list?groupType=group_organization&groupCategory=1").then(res=> {
+					if(res.code == 200) {
+						this.organizationList = res.data;
+					}
+				})
+			},
+			getEmployeeList() {
+				this.$HTTP.get("/api/blade-cps/employee/get/list?organizationCode=00001&status=1").then(res=> {
+					if(res.code == 200) {
+						this.employeeList = res.data;
+					}
+				})
+			},
+			table_edit(row){
+				if(row.notifyName == "閽夐拤") {
+					var url = `/api/blade-notify/notifier/template/dingTalk/dingTalkMessage/config/metadata`;
+				}else if(row.notifyName == "浼佷笟寰俊") {
+					var url = `/api/blade-notify/notifier/template/weiXinQY/qyTextMessage/config/metadata`;
+				}else if(row.notifyName == "绔欏唴淇�") {
+					var url = `/api/blade-notify/notifier/template/internalMessage/systemDefault/config/metadata`;
+				}else if(row.notifyName == "閭欢") {
+					var url = `/api/blade-notify/notifier/template/email/embedded/config/metadata`;
+				}
+				this.dialog.save = true
+				this.$HTTP.get(url).then(res=> {
+					if(res.code == 200) {
+						this.dialog.save = true;
+						this.$nextTick(() => {
+							var obj = Object.assign(row,res.data);
+							this.$refs.saveDialog.open('edit').setData(obj);
+						})
+					}
+				})
+			},
+			getbusiness() {
+				this.$HTTP.get(`/api/blade-notify/business-notify?businessKey=${this.businessKey}`).then(res=> {
+					if(res.code == 200) {
+						res.data.businessNotifyDTOList.forEach(item=> {
+							item.checked = (item.status == '0'?false: true);
+						})
 						this.contentData = res.data.businessNotifyDTOList;
+						this.employeeLi = res.data.defaultObject.empList || []; //閮ㄩ棬鍙嶆樉
+						this.organizationLi = res.data.defaultObject.orgList || []; //鍛樺伐鍙嶆樉
+						if(this.organizationLi !=  null ) {
+							this.isaddOrganization = false;
+						}
 					}
 				})
 			},
 			handleNodeClick(data) {
-				if(data.code) {
-					this.lastLevelId = data.id;
-					// 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;
-					// 	}
-					// })
+				if(data.businessKey) {
+					this.businessKey = data.businessKey;
+					this.getbusiness();
 				}
+			},
+			getLastLevelIds(tree) {  
+				if (tree.length === 0) return ""; // 濡傛灉娌℃湁鏍硅妭鐐癸紝杩斿洖绌� 
+				const lastLevelIds = []; 
+				const lastLevelCodes = [];
+				function traverseTree(node) {  
+					if(!node.children) {
+						lastLevelCodes.push(node);
+					}
+					if (node.children) {  
+						node.children.forEach(traverseTree); // 閫掑綊閬嶅巻瀛愯妭鐐�  
+					} else {  
+						lastLevelIds.push(node.id);
+					}
+				}  	
+				// 鍙亶鍘嗙涓�涓牴鑺傜偣  
+				traverseTree(tree[0]);  
+				return {lastLevelCodes,lastLevelId:lastLevelIds[0]}; // 杩斿洖lastLevelCodes锛氭病鏈塩ode鐨勬暟缁勩�俵astLevelId锛氭湁code鐨勭涓�涓猧d
 			},
 			getTreeList() {
 				this.$HTTP.get("/api/blade-notify/business-notify/tree").then(res=> {
 					if(res.code == 200) {
 						this.tableData = res.data;
-						console.log(this.tableData,123)
+						this.lastLevelId = this.getLastLevelIds(this.tableData).lastLevelId;
+						this.$nextTick(()=>{
+							this.$refs.treeRef.setCurrentKey(this.lastLevelId);  //绗竴涓妭鐐圭殑绗竴涓瓙鑺傜偣鏈�鍚庝竴绾ч粯璁ら�変腑
+						})
+						this.businessKey = this.getLastLevelIds(this.tableData).lastLevelCodes[0].businessKey;
+						this.getbusiness();
 					}
 				})
 			},
@@ -136,8 +294,8 @@
 
 			// 	})
 			// },
-			addfeedbackSuccess() {
-				//this.getlist();
+			addbusinessSuccess() {
+				this.getbusiness();
 			}
 		}
 	}
@@ -185,7 +343,7 @@
 	justify-content: space-between;
 	margin: 24px 0 0 0;
     padding: 0 20px 0 10px;
-    border-left: 6px solid #3b8e8e;
+    border-left: 6px solid #409eff;
 }
 .ct-span {
 	color: #101010;
@@ -206,6 +364,7 @@
     background: #fff;
     margin-right: 20px;
     box-shadow: 0 1px 3px rgba(0,0,0,.16);
+	position: relative;
 }
 .content {
     padding: 10px;
@@ -214,4 +373,47 @@
     height: 200px;
     overflow: auto;
 }
+.box-top-name {
+	font-weight: 700;
+    font-size: 18px;
+    text-align: left;
+    color: #333;
+    display: block;
+    margin-top: -30px;
+    margin-left: 56px;
+}
+.box-top-title {
+    font-size: 14px;
+    text-align: left;
+    color: #333;
+    display: block;
+    margin-top: -30px;
+    margin-left: 56px;
+	padding: 0 20px 0 33px;
+    margin: 20px 0 10px 24px;
+}
+.box-top-btn {
+	position: absolute;
+	font-size: 14px;
+    right: 12px;
+    bottom: 12px;
+	cursor: pointer;
+}
+.box-top-btn span:nth-child(1) {
+	margin-right: 12px;
+}
+.tagItem {
+	margin: 10px 10px 10px 0;
+    background-color: #409eff;
+    color: #fff;
+    border-color: #409eff;
+    display: inline-block;
+    font-size: 12px;
+    padding: 4px 10px;
+    border-radius: 4px;
+}
+.bottom-btn {
+	margin-top: 20px;
+	text-align: center;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3