From 0bf020909308ba897c4cc20c73f9ac72cc8d9bf4 Mon Sep 17 00:00:00 2001
From: lzhe <181968431@qq.com>
Date: 星期一, 03 六月 2024 00:10:25 +0800
Subject: [PATCH] 1

---
 src/views/configuration/custom/planSettings.vue     |  128 ++++++++++++++++++---
 src/layout/components/userbar.vue                   |    3 
 src/views/configuration/custom/saveSelectDialog.vue |  130 +++++++++++++++++++++
 src/config/route.js                                 |   11 +
 src/views/notification/notice/newsmail.vue          |   78 +++++++++++++
 5 files changed, 331 insertions(+), 19 deletions(-)

diff --git a/src/config/route.js b/src/config/route.js
index a25a9dc..83bc1d1 100644
--- a/src/config/route.js
+++ b/src/config/route.js
@@ -77,6 +77,17 @@
             type: 'menu',
             hidden: true
         }
+    },
+    {
+        name: "娑堟伅涓績",
+        path: "/notification/notice/newsmail",
+        component: "notification/notice/newsmail",
+        meta: {
+            icon: "el-icon-menu",
+            title: "娑堟伅涓績",
+            type: 'menu',
+            hidden: true
+        }
     }
 ]
 
diff --git a/src/layout/components/userbar.vue b/src/layout/components/userbar.vue
index 133f4cc..9799825 100644
--- a/src/layout/components/userbar.vue
+++ b/src/layout/components/userbar.vue
@@ -166,7 +166,8 @@
 			},
 			//鏄剧ず鐭秷鎭�
 			showMsg(){
-				this.msg = true
+				//this.msg = true
+				this.$router.push({path: '/notification/notice/newsmail'});
 			},
 			//鏍囪宸茶
 			markRead(){
diff --git a/src/views/configuration/custom/planSettings.vue b/src/views/configuration/custom/planSettings.vue
index a82571e..a1673a6 100644
--- a/src/views/configuration/custom/planSettings.vue
+++ b/src/views/configuration/custom/planSettings.vue
@@ -8,7 +8,7 @@
 -->
 <template>
 	<div class="aposcope-main">
-		<div class="header">
+		<div class="header" v-if="$route.query.type == 1">
 			<div class="title">璁″垝鏄剧ず璁剧疆</div>
 			<div class="type">
 				<div class="item last" @click="openPlan">鏂板缓璁″垝绫诲瀷妯$増</div>
@@ -24,69 +24,119 @@
 				</div>
 			</div>
 		</div>
-	    <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+	    <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
 			<el-tab-pane label="鏂板缓椤佃缃�" name="first">
 				<div>
-					<div class="add-field">+ 娣诲姞瀛楁</div>
+					<div class="add-field" @click="openSelect">+ 娣诲姞瀛楁</div>
 					<div class="field-title">鍩虹瀛楁</div>
 					<el-table ref="multipleTableRef" :data="tableData0" border style="width: 100%" class="multipleTableRef">
 						<el-table-column prop="fieldName" label="瀛楁鍚�"></el-table-column>
 						<el-table-column prop="fieldDescription" label="鎻愮ず鏂囧瓧"></el-table-column>
 						<el-table-column prop="defaultValue" label="榛樿鍊�"></el-table-column>
-						<el-table-column prop="mustField" label="鏄惁蹇呭~"></el-table-column>
+						<el-table-column prop="mustField" label="鏄惁蹇呭~">
+							<template #default="scope">
+								<span>{{scope.row.mustField == '1'?"鏄�": "鍚�"}}</span>
+							</template>
+						</el-table-column>
 						<el-table-column fixed="right" label="鎿嶄綔">
 							<template #default="scope">
-								<el-button text type="primary" :disabled="scope.row.systemFieldLabel == '鏄�'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+								<el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="field-title">鎵╁睍瀛楁</div>
+					<el-table ref="multipleTableRef" :data="tableData0extend" border style="width: 100%" class="multipleTableRef">
+						<el-table-column prop="fieldName" label="瀛楁鍚�"></el-table-column>
+						<el-table-column prop="fieldDescription" label="鎻愮ず鏂囧瓧"></el-table-column>
+						<el-table-column prop="defaultValue" label="榛樿鍊�"></el-table-column>
+						<el-table-column prop="mustField" label="鏄惁蹇呭~">
+							<template #default="scope">
+								<span>{{scope.row.mustField == '1'?"鏄�": "鍚�"}}</span>
+							</template>
+						</el-table-column>
+						<el-table-column fixed="right" label="鎿嶄綔">
+							<template #default="scope">
+								<el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
 							</template>
 						</el-table-column>
 					</el-table>
 				</div>
 			</el-tab-pane>
 			<el-tab-pane label="缂栬緫椤佃缃�" name="second">
-				<div class="add-field">+ 娣诲姞瀛楁</div>
+				<div class="add-field" @click="openSelect">+ 娣诲姞瀛楁</div>
 				<div class="field-title">鍩虹瀛楁</div>
 				<el-table ref="multipleTableRef" :data="tableData1" border style="width: 100%" class="multipleTableRef">
 					<el-table-column prop="fieldName" label="瀛楁鍚�"></el-table-column>
-					<el-table-column prop="fieldDescription" label="鏀寔缂栬緫"></el-table-column>
+					<el-table-column label="鏀寔缂栬緫" prop="supportUpdateLabel"></el-table-column>
 					<el-table-column fixed="right" label="鎿嶄綔">
 						<template #default="scope">
-							<el-button text type="primary" :disabled="scope.row.systemFieldLabel == '鏄�'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+							<el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
 				<div class="field-title">鎵╁睍瀛楁</div>
+				<el-table ref="multipleTableRef" :data="tableData1extend" border style="width: 100%" class="multipleTableRef">
+					<el-table-column prop="fieldName" label="瀛楁鍚�"></el-table-column>
+					<el-table-column prop="supportUpdateLabel" label="鏀寔缂栬緫"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
 			</el-tab-pane>
 			<el-tab-pane label="鏌ョ湅椤佃缃�" name="third">
+				<div class="add-field" @click="openSelect">+ 娣诲姞瀛楁</div>
 				<div class="field-title">鍩虹瀛楁</div>
 				<el-table ref="multipleTableRef" :data="tableData2" border style="width: 100%" class="multipleTableRef">
 					<el-table-column prop="fieldName" label="瀛楁鍚�"></el-table-column>
 					<el-table-column fixed="right" label="鎿嶄綔">
 						<template #default="scope">
-							<el-button text type="primary" :disabled="scope.row.systemFieldLabel == '鏄�'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+							<el-button text type="primary" :disabled="scope.row.sysFieldMust == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
 				<div class="field-title">鎵╁睍瀛楁</div>
+				<el-table ref="multipleTableRef" :data="tableData2extend" border style="width: 100%" class="multipleTableRef">
+					<el-table-column prop="fieldName" label="瀛楁鍚�"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" :disabled="scope.row.sysFieldMust == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
 			</el-tab-pane>
 		</el-tabs>
 	</div>
+	<!-- 鏂板缓璁″垝 -->
 	<save-dialog v-if="dialog.save" ref="saveDialog" @success="addPlanSuccess" @closed="dialog.save=false"></save-dialog>
+	<!-- 娣诲姞瀛楁 -->
+	<save-select-dialog v-if="dialog.saveSelect" ref="saveSelectDialog" @success="addSelectSuccess" @closed="dialog.saveSelect=false" @addExtend="addExtend"></save-select-dialog>
+	<!-- 娣诲姞鎵╁睍瀛楁 -->
+	<save-extend-dialog v-if="dialog.extendSave" ref="saveExtendDialog" @success="addExtendSuccess" @closed="dialog.save=false"></save-extend-dialog>
 </template>
 <script>
 	import saveDialog from './addPlan'
+	import saveSelectDialog from './saveSelectDialog'
+	import saveExtendDialog from './addField'
 	export default {
 		name: "custom",
 		data(){
 			return {
 				id: "",
 				dialog: {
-					save: false
+					save: false,  //鏂板妯$増
+					saveSelect: false,  //娣诲姞瀛楁
+					extendSave: false  //娣诲姞鎵╁睍瀛楁
 				},
 				planData: [],
 				activeName: "first",
+				configType: 1,
 				tableData0: [],
 				tableData1: [],
-				tableData2: []
+				tableData2: [],
+				tableData0extend: [],
+				tableData1extend: []
 			}
 		},
 		created(){
@@ -97,7 +147,7 @@
 			this.gitProduct();
 		},
 		components: {
-			saveDialog
+			saveDialog,saveSelectDialog,saveExtendDialog
 	    },
 		methods: {
 			gitProduct() {
@@ -126,9 +176,19 @@
 				this.getTableList();
 			},
 			getTableList() {
-				this.$HTTP.get(`/api/blade-system/custom-template-field/listField?configType=1&templateId=${this.id}`).then(res=> {
+				this.$HTTP.get(`/api/blade-system/custom-template-field/listField?configType=${this.configType}&templateId=${this.id}`).then(res=> {
 					if(res.code == 200) {
-						this.tableData0 = res.data.systemFieldList;
+						if(this.activeName == "first") {
+							this.tableData0 = res.data.systemFieldList;
+							this.tableData0extend = res.data.customFieldList || [];
+						}else if(this.activeName == "second") {
+							this.tableData1 = res.data.systemFieldList;
+							this.tableData1extend = res.data.customFieldList || [];
+						}else if(this.activeName == "third") {
+							this.tableData2 = res.data.systemFieldList;
+							this.tableData2extend = res.data.customFieldList || [];
+						}
+						
 					}
 				})
 			},
@@ -152,14 +212,46 @@
 					this.$refs.saveDialog.open(this.productList,this.planData)
 				})
 			},
+			openSelect() {
+				this.dialog.saveSelect = true
+				this.$HTTP.get(`/api/blade-system/custom-template-field/getSelectBox?configType=${this.configType}&templateId=${this.id}`).then(res=> {
+					if(res.code == 200) {
+						this.$refs.saveSelectDialog.open(res.data,this.id,this.configType);
+					}
+				})
+			},
 			addPlanSuccess() {
 				this.getBaseData();
 			},
-			table_del(row,index) {
-
+			addSelectSuccess() {
+				this.getTableList();
 			},
-			handleClick(text) {
-
+			addExtendSuccess() {
+				this.getTableList();
+			},
+			addExtend() {
+				this.dialog.extendSave = true
+				this.$nextTick(() => {
+					this.$refs.saveExtendDialog.open();
+				})
+			},
+			table_del(row,index) {
+				this.$HTTP.delete(`/api/blade-system/custom-template-field-relation/remove`,[row.id]).then(res=> {
+					if(res.code == 200) {
+						this.$message.success("鎿嶄綔鎴愬姛");
+						this.getTableList();
+					}
+				})
+			},
+			handleClick(TabPaneName) {
+				if(TabPaneName == "first") {
+					this.configType = 1;
+				}else if(TabPaneName == "second") {
+					this.configType = 2;
+				}else if(TabPaneName == "third") {
+					this.configType = 3;
+				}
+				this.getTableList();
 			}
 		}
 	}
diff --git a/src/views/configuration/custom/saveSelectDialog.vue b/src/views/configuration/custom/saveSelectDialog.vue
new file mode 100644
index 0000000..e40dc22
--- /dev/null
+++ b/src/views/configuration/custom/saveSelectDialog.vue
@@ -0,0 +1,130 @@
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="700" destroy-on-close @closed="$emit('closed')">
+		<div class="field-title">鍩虹瀛楁</div>
+		<el-checkbox-group v-model="checkListData">
+		    <el-checkbox v-for="item in checkList" :label="item.fieldName" :disabled="item.sysFieldMust == 1?true:false" />
+		 </el-checkbox-group>
+		 <div class="field-title">
+		 	鎵╁睍瀛楁
+		 	<span class="add-field" @click="openSelect">+ 娣诲姞瀛楁</span>
+		 </div>
+		 <el-checkbox-group v-model="extendListData" v-if="extendCheckList.length > 0">
+		    <el-checkbox v-for="item in extendCheckList" :label="item.fieldName" :disabled="item.sysFieldMust == 1?true:false" />
+		 </el-checkbox-group>
+		<template #footer>
+			<el-button @click="visible=false">鍙栨秷</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="selectSubmit">纭畾</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				id: "",
+				configType: "",
+				checkListData: [],
+				checkList: [],
+				extendListData: [],
+				extendCheckList: [],
+				mode: "add",
+				titleMap: {
+					add: '娣诲姞瀛楁',
+					edit: '淇敼',
+					show: '鏌ョ湅'
+				},
+				visible: false,
+				isSaveing: false,
+			}
+		},
+		mounted() {
+			
+		},
+		components: {
+			
+	    },
+		methods: {
+			openSelect() {
+				this.$emit('addExtend', true);
+				this.visible = false;
+			},
+			//鏄剧ず
+			open(data,id,configType,mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				this.checkList = data.systemFieldList || [];
+				this.extendCheckList = data.customFieldList || [];
+				this.checkList.forEach(item=> {
+					if(item.sort !=null) {
+						this.checkListData.push(item.fieldName);
+					}
+				})
+				this.extendCheckList.forEach(item=> {
+					if(item.sort !=null) {
+						this.extendListData.push(item.fieldName);
+					}
+				})
+				this.id = id;
+				this.configType = configType;
+				return this
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			selectSubmit(){
+				var list = [];
+				this.checkList.forEach(item=> {
+					this.checkListData.forEach(item1=> {
+						if(item.fieldName == item1) {
+							list.push(item.fieldId);
+						}
+					})
+				})
+				this.extendCheckList.forEach(item=> {
+					this.extendListData.forEach(item1=> {
+						if(item.fieldName == item1) {
+							list.push(item.fieldId);
+						}
+					})
+				})
+				var obj ={
+					businessType: this.$route.query.type,
+					configType: this.configType,
+					fieldList: list,
+					templateId: this.id
+				};
+				this.isSaveing = true;
+				this.$HTTP.post("/api/blade-system/custom-template-field-relation/insert",obj).then(res=> {
+					this.isSaveing = false;
+					if(res.code == 200) {
+						this.$emit('success', this.checkListData, this.mode);
+						this.visible = false;
+						this.$message.success("鎿嶄綔鎴愬姛");
+					}else {
+						this.$alert(res.message, "鎻愮ず", {type: 'error'});
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				//Object.assign(this.addPlanForm, data);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+.add-field {
+    color: #409eff;
+    font-weight: 400;
+    font-size: 14px;
+    cursor: pointer;
+    padding-left: 8px;
+    margin: 0;
+}
+.field-title {
+    font-size: 14px;
+    color: #5f5f5f;
+    margin: 14px 0;
+}
+</style>
diff --git a/src/views/notification/notice/newsmail.vue b/src/views/notification/notice/newsmail.vue
new file mode 100644
index 0000000..167cbc8
--- /dev/null
+++ b/src/views/notification/notice/newsmail.vue
@@ -0,0 +1,78 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-05-08 18:22:48
+ * @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
+-->
+<template>
+	<div class="newsmail-main">
+		<el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
+		    <el-tab-pane label="鍏ㄩ儴鍏憡" name="A">
+		    	<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef">
+					<el-table-column prop="categoryName" label="title"></el-table-column>
+					<el-table-column prop="businessName" label="content"></el-table-column>
+					<el-table-column prop="notifyTime" label="date"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" size="small" @click="table_view(scope.row, scope.$index)">鏌ョ湅鏇村&gt&gt</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+		    </el-tab-pane>
+		    <el-tab-pane label="鍙戝竷鍏憡" name="B">Config</el-tab-pane>
+		    <el-tab-pane label="浠诲厤鍏憡" name="C">Role</el-tab-pane>
+		    <el-tab-pane label="杞彂鍏憡" name="D">Task</el-tab-pane>
+		    <el-tab-pane label="鎸囩ず鍏憡" name="E">Task</el-tab-pane>
+		    <el-tab-pane label="浜嬪姟鍏憡" name="F">Task</el-tab-pane>
+		</el-tabs>
+	</div>
+</template>
+<script>
+	export default {
+		name: "newmail",
+		data(){
+			return {
+				tableData: [],
+				activeName: "A"
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			this.getcategoryList();
+		},
+		components: {
+			
+		},
+		methods: {
+			table_view() {
+
+			},
+			handleClick(TabPaneName) {
+
+			},
+			getcategoryList() {
+				this.$HTTP.get(`/api/blade-notify/notify-system/page?size=10&notifyType=2&current=1`).then(res=> {
+					if(res.code == 200) {
+						this.tableData = res.data.records;
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped>
+.newsmail-main {
+	min-height: 100%;
+	margin: 8px;
+	padding:20px;
+	background: #fff;
+}
+.multipleTableRef /deep/ .el-table__header-wrapper{
+	display: none;
+}
+</style>

--
Gitblit v1.9.3