From 465fde7abd473338a3bfe80c8338a63d162ab2b3 Mon Sep 17 00:00:00 2001
From: lzhe <181968431@qq.com>
Date: 星期一, 06 五月 2024 23:40:17 +0800
Subject: [PATCH] 1

---
 src/views/console/soam/logo.png       |    0 
 src/views/console/soam/oss-system.vue |  158 ++++++++++++++++++++++----
 src/views/console/soam/addOss.vue     |  196 ++++++++++++++++++++++++++++++++
 3 files changed, 328 insertions(+), 26 deletions(-)

diff --git a/src/views/console/soam/addOss.vue b/src/views/console/soam/addOss.vue
new file mode 100644
index 0000000..60b0b3c
--- /dev/null
+++ b/src/views/console/soam/addOss.vue
@@ -0,0 +1,196 @@
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="600" destroy-on-close @closed="$emit('closed')">
+		<p class="title-tip" v-if="isShowWrite">
+			<el-icon><Warning /></el-icon>
+			<span>鍏宠仈鍚庯紝浼佷笟寰俊鐨勯儴闂ㄧ粨鏋勫拰鎴愬憳鍚屾缁欐湰绯荤粺銆傛湰绯荤粺浼佷笟缁勭粐鏋舵瀯灏嗕笉鍐嶆敮鎸佹墜鍔ㄧ淮鎶�</span>
+		</p>
+		<el-form :model="addOssForm" :rules="addOssRules" :disabled="mode=='show'" ref="dialogForm" label-width="192px" label-position="center" v-if="isShowWrite">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="浼佷笟CorpId" prop="wxCorpId">
+						<el-input v-model="addOssForm.wxCorpId" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="AgentID" prop="wxAgentId">
+						<el-input v-model="addOssForm.wxAgentId" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="搴旂敤鐨凷ecret" prop="wxAppSecret">
+						<el-input v-model="addOssForm.wxAppSecret" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="閫氳褰曠殑Secret" prop="wxBookSecret">
+						<el-input v-model="addOssForm.wxBookSecret" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="鍥炶皟閰嶇疆Token" prop="wxCallbackToken">
+						<el-input v-model="addOssForm.wxCallbackToken" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="鍥炶皟閰嶇疆EncodingAesKey" prop="wxAesKey">
+						<el-input v-model="addOssForm.wxAesKey" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="鍥炶皟閰嶇疆鍩熷悕" prop="wxDomain">
+						<el-input v-model="addOssForm.wxDomain" placeholder="璇疯緭鍏�" clearable></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div v-if="!isShowWrite">
+			<p class="sync-res">
+				<el-icon v-if="!userResult" class="cr"><CircleClose /></el-icon>
+				<el-icon v-if="userResult" class="cg"><CircleCheck /></el-icon>
+				<span>鍛樺伐鍚屾</span><span>{{userResult == false?"澶辫触":"鎴愬姛"}}</span>
+			</p>
+			<p class="sync-res">
+				<el-icon v-if="!groupResult" class="cr"><CircleClose /></el-icon>
+				<el-icon v-if="groupResult" class="cg"><CircleCheck /></el-icon>
+				<span>閮ㄩ棬鍚屾</span><span>{{groupResult == false?"澶辫触":"鎴愬姛"}}</span>
+			</p>
+			<p class="sync-res">
+				<el-icon v-if="!postResult" class="cr"><CircleClose /></el-icon>
+				<el-icon v-if="postResult" class="cg"><CircleCheck /></el-icon>
+				<span>宀椾綅鍚屾</span><span>{{postResult == false?"澶辫触":"鎴愬姛"}}</span>
+			</p>
+		</div>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show' && isShowWrite" type="primary" :loading="isSaveing" @click="ossSubmit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+	let icons = []
+	for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+	    icons.push(key)
+	}
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				userResult: true,
+				groupResult: true,
+				postResult: true,
+				isShowWrite: true,
+				addOssForm: {
+					wxCorpId: "",
+					wxAgentId: "",
+					wxAppSecret: "",
+					wxBookSecret: "",
+					wxCallbackToken: "",
+					wxAesKey: "",
+					wxDomain: ""
+				},
+				//楠岃瘉瑙勫垯
+				addOssRules: {
+					wxCorpId:[{required: true, message: '璇疯緭鍏ヤ紒涓欳orpId'}],
+					wxAgentId:[{required: true, message: '璇疯緭鍏gentID'}],
+					wxAppSecret: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄧ殑Secret'}],
+					wxBookSecret: [{required: true, message: '璇疯緭鍏ラ�氳褰曠殑Secret'}],
+					wxCallbackToken: [{required: true, message: '璇疯緭鍏ュ洖璋冮厤缃甌oken'}],
+					wxAesKey: [{required: true, message: '璇疯緭鍏ュ洖璋冮厤缃瓻ncodingAesKey'}],
+					wxDomain: [{required: true, message: '璇疯緭鍏ュ洖璋冮厤缃煙鍚�'}]
+				},
+				value1: true,
+				mode: "add",
+				titleMap: {
+					add: '鍏宠仈',
+					edit: '淇敼',
+					show: '鏌ョ湅',
+					end: '绔嬪嵆鍚屾'
+				},
+				visible: false,
+				isSaveing: false,
+				//鎵�闇�鏁版嵁閫夐」
+				groups: [],
+				groupsProps: {
+					value: "id",
+					multiple: true,
+					checkStrictly: true
+				},
+				depts: [],
+				deptsProps: {
+					value: "id",
+					checkStrictly: true
+				}
+			}
+		},
+		components: {...ElementPlusIconsVue},
+		mounted() {
+		
+		},
+		methods: {
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			ossSubmit(){
+				var obj = Object.assign({},this.addOssForm);
+				obj.appType = 1;
+				obj.id = "1787499893602787330";
+				obj.domain = obj.wxDomain;
+				obj.wxid = "1787499893602787330";
+				this.$refs.dialogForm.validate(async (valid) => {
+					if (valid) {
+						this.isSaveing = true;
+						this.$HTTP.post("/api/blade-sync/outer-app-config/submit",obj).then(res=> {
+							this.isSaveing = false;
+							if(res.code == 200) {
+								this.mode = "end";
+								this.isShowWrite = false;
+								this.userResult = res.data.userResult;
+								this.groupResult = res.data.groupResult;
+								this.postResult = res.data.postResult;
+								this.$emit('success', this.addOssForm, this.mode);
+								//this.visible = false;
+								this.$message.success("鎿嶄綔鎴愬姛");
+							}else {
+								this.$alert(res.message, "鎻愮ず", {type: 'error'});
+							}
+						})
+					}else{
+						return false;
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+				//Object.assign(this.addOssForm, data);
+			}
+		}
+	}
+</script>
+
+<style>
+.title-tip {
+    padding: 0 24px;
+    text-align: center;
+    color: #ea3c4a;
+    font-size: 12px;
+    margin-bottom:20px;
+}
+.sync-res {
+    text-align: center;
+}
+.sync-res .cr {
+	color: red;
+	margin-right: 8px;
+}
+.sync-res .cg {
+	color: green;
+	margin-right: 8px;
+}
+</style>
diff --git a/src/views/console/soam/logo.png b/src/views/console/soam/logo.png
new file mode 100644
index 0000000..0ecbd9c
--- /dev/null
+++ b/src/views/console/soam/logo.png
Binary files differ
diff --git a/src/views/console/soam/oss-system.vue b/src/views/console/soam/oss-system.vue
index 5dccb9a..f193439 100644
--- a/src/views/console/soam/oss-system.vue
+++ b/src/views/console/soam/oss-system.vue
@@ -40,36 +40,19 @@
 				<div class="tabTitle">浼佷笟LOGO</div>
 				<span class="logotitle">涓婁紶logo</span>
 				<div class="logo1">
-					<el-upload
-						class="avatar-uploader"
-						:headers="authorization"
-						action="/api/blade-resource/oss/endpoint/put-file"
-						:show-file-list="false"
-						:on-success="handleAvatarSuccess1"
-						:before-upload="beforeAvatarUpload"
-						type="0"
-					>
+					<el-upload class="avatar-uploader" :headers="authorization" action="/api/blade-resource/oss/endpoint/put-file" :show-file-list="false" :on-success="handleAvatarSuccess1" :before-upload="beforeAvatarUpload">
 						<img v-if="imageUrl1" :src="imageUrl1" class="avatar" />
 						<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
 					</el-upload>
 					<span>寤鸿鏃犲簳鑹层�佸ぇ灏�180*40px</span>
 				</div>
 				<div class="logo2">
-					<el-upload
-						class="avatar-uploader"
-						:headers="authorization"
-						action="/api/blade-resource/oss/endpoint/put-file"
-						:show-file-list="false"
-						:on-success="handleAvatarSuccess2"
-						:before-upload="beforeAvatarUpload"
-						type="1"
-					>
+					<el-upload class="avatar-uploader" :headers="authorization" action="/api/blade-resource/oss/endpoint/put-file" :show-file-list="false" :on-success="handleAvatarSuccess2" :before-upload="beforeAvatarUpload">
 						<img v-if="imageUrl2" :src="imageUrl2" class="avatar" />
 						<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
 					</el-upload>
 					<span>寤鸿鏃犲簳鑹层�佸ぇ灏�180*40px</span>
 				</div>
-				
 			</el-tab-pane>
 			<el-tab-pane label="搴旂敤璁剧疆">
 				<div class="tabTitle">搴旂敤璁剧疆</div>
@@ -146,11 +129,46 @@
 					</el-form>
 				 </el-card>
 			</el-tab-pane>
+			<el-tab-pane label="鎺堟潈">
+				<div class="tabTitle">鎺堟潈</div>
+				<div class="license-detail">
+					<div><span class="left">鎺堜簣锛� </span>{{licenseDetail.account}}</div>
+					<div><span class="left">鎺堟潈鏂瑰紡锛�</span>姘镐箙鎺堟潈</div>
+					<div><span class="left">鎺堟潈鏃ユ湡锛�</span>{{licenseDetail.applyDate}}~{{licenseDetail.expireDate}}</div>
+					<div><span class="left">宸叉巿鏉冩ā鍧楋細</span>{{licenseDetail.moduleNames.VISION}}|{{licenseDetail.moduleNames.CPS}}</div>
+					<div><span class="left">璁惧鏍囪瘑锛�</span><span class="licenseCopy" @click="licenseCopy">澶嶅埗</span></div>
+				</div>
+			</el-tab-pane>
+			<el-tab-pane label="鏈嶅姟闆嗘垚">
+				<div class="tabTitle">鏈嶅姟闆嗘垚</div>
+				<div class="card">
+					<div class="top">
+						<div class="title">
+							<img src="./logo.png" />
+							<span>浼佷笟寰俊</span>
+							<div class="desc">CPS涓庝紒涓氬井淇″叧鑱旓紝鍗忎綔涓庢矡閫氭洿鍔犻珮鏁堛�傜粦瀹氬悗灏嗗悓姝ヤ紒涓氬井淇$殑浜哄憳鍚嶅崟鍜岀粍缁囨灦鏋勶紝骞跺厑璁告垚鍛樹娇鐢ㄤ紒涓氬井淇¤处鍙风櫥褰�</div>
+						</div>
+						<el-button class="btn" @click="addOss(1)">鍏宠仈</el-button>
+					</div>
+				</div>
+        		<div class="card">
+        			<div class="top">
+        				<div class="title">
+        					<img src="./logo.png"/>
+        					<span >閽夐拤</span>
+        					<div class="desc">CPS涓庨拤閽夊叧鑱旓紝鍗忎綔涓庢矡閫氭洿鍔犻珮鏁堛�傜粦瀹氬悗灏嗗悓姝ラ拤閽夌殑浜哄憳鍚嶅崟鍜岀粍缁囨灦鏋勶紝骞跺厑璁告垚鍛樹娇鐢ㄩ拤閽夎处鍙风櫥褰�</div>
+        				</div>
+        				<el-button class="btn" @click="addOss(2)">鍏宠仈</el-button>
+        			</div>
+        		</div>
+			</el-tab-pane>
 		</el-tabs>
+		<save-dialog v-if="dialog.save" ref="saveDialog" @success="addOssSuccess" @closed="dialog.save=false"></save-dialog>
 	</div>
 </template>
 
 <script>
+	import saveDialog from './addOss'
 	import * as ElementPlusIconsVue from '@element-plus/icons-vue'
 	let icons = []
 	for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
@@ -160,6 +178,19 @@
 		name: "oss-main",
 		data(){
 			return {
+				dialog: {
+					save: false
+				},
+				copyStr: "",
+				licenseDetail: {
+					account: "",
+					applyDate: "",
+					expireDate: "",
+					moduleNames: {
+						VISION: "",
+						CPS: ""
+					}
+				},
 				uploadData: {},
 				logoType: "0",
 				authorization: {Authorization: "Basic c2FiZXI6c2FiZXJfc2VjcmV0"},
@@ -188,7 +219,7 @@
 				temData: []
 			}
 		},
-		components: {...ElementPlusIconsVue},
+		components: {...ElementPlusIconsVue,saveDialog},
 		created(){
 			
 		},
@@ -196,8 +227,40 @@
 			this.getOssUpdata();  //鏂囦欢瀛樺偍
 			this.setting();  //搴旂敤璁剧疆
 			this.getFile();  //浼佷笟logo
+			this.license(); //鎺堟潈
 		},
 		methods: {
+			addOss(type) {
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open();
+				})
+			},
+			addOssSuccess() {
+
+			},
+			licenseCopy() { 
+				// 澶嶅埗鍒板壀璐存澘  
+				navigator.clipboard.writeText(this.copyStr).then(() => {  
+					console.log('鎷疯礉瀹屾垚');  
+				}).catch(err => {  
+					console.error('Failed to copy text: ', err);  
+				});
+			},
+			license() {
+				this.$HTTP.get("/api/blade-cps/init/license-detail").then(res=> {
+					if(res.code == 200) {
+						res.data.moduleNames.VISION = JSON.stringify(res.data.moduleNames.VISION);
+						res.data.moduleNames.CPS = JSON.stringify(res.data.moduleNames.CPS);
+						this.licenseDetail = res.data;
+					}
+				})
+				this.$HTTP.get("/api/blade-cps/init/license-device").then(res=> {  //璁惧鏍囪瘑
+					if(res.code == 200) {
+						this.copyStr = res.data;
+					}
+				})
+			},
 			getFile() {
 				this.$HTTP.get("/api/blade-cps/enterprise/get").then(res=> {
 					if(res.code == 200) {
@@ -208,7 +271,6 @@
 				})
 			},
 			handleAvatarSuccess1(resp, file) {
-				this.getFile();
 				this.logoType = "0";
 				if(this.imageUrl1) {
 					resp.uploadMethod = "edit";
@@ -218,7 +280,6 @@
 				this.handleAvatarSuccess(resp);
 			},
 			handleAvatarSuccess2(resp, file) {
-				this.getFile();
 				this.logoType = "1";
 				if(this.imageUrl2) {
 					resp.uploadMethod = "edit";
@@ -232,22 +293,24 @@
 				this.$HTTP.get("/api/blade-cps/enterprise/get").then(res=> {
 					if(res.code == 200) {
 						// 鍏堣祴鍊�
+						if(res.data.list.length == 0) res.data.list = [{},{}];
 						that.uploadData = res.data;
 						that.imageUrl1 = res.data.list[0].link;
 						that.imageUrl2 = res.data.list[1].link;
 						//娣诲姞鎺ュ彛
 						var url = "/api/blade-cps/enterprise/add";
 						if(that.logoType == "0") {
-							Object.assign({},res.data.list[0]);
+							var upData = Object.assign({},res.data.list[0]);
 							obj.type = "0";
 						}
 						if(that.logoType == "1") {
 							obj.type = "1";
+							var upData = Object.assign({},res.data.list[1]);
 						}
 						if(resp.uploadMethod == "edit") {
 							url = "/api/blade-cps/enterprise/edit";
 						}
-						that.$HTTP.post(url,resp.data).then(resJ=> {
+						that.$HTTP.post(url,upData).then(resJ=> {
 							if(resJ.code == 200) {
 								that.$message.success("鎿嶄綔鎴愬姛");
 							}else {
@@ -258,9 +321,9 @@
 				})
 			},
 			beforeAvatarUpload(file) {
-				var isJPG = file.type === 'image/jpeg';
+				var isJPG = (file.type === 'image/jpeg' || file.type === 'image/png');
 				if (!isJPG) {
-				this.$message.error('鏍煎紡閿欒锛岃閲嶆柊涓婁紶锛�');
+					this.$message.error('鏍煎紡閿欒锛岃閲嶆柊涓婁紶锛�');
 				}
 				return isJPG;
 			},
@@ -480,4 +543,47 @@
 	height: 92px;
 	display: block;
 }
+.license-detail {
+    display: flex;
+    flex-direction: column;
+    padding: 10px;
+    font-size: 14px;
+    padding-left: 70px;
+}
+.license-detail .left {
+    width: 100px;
+    display: inline-block;
+    text-align: right;
+    font-weight: 700;
+}
+.licenseCopy {
+	color: #62a5a5;
+	cursor: pointer;
+}
+.card {
+    margin-bottom: 20px;
+    padding: 20px;
+    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+    margin-left: 12px;
+    margin-right: 12px;
+}
+.card .top {
+    margin-bottom: 20px;
+    position: relative;
+}
+.card .top .title img {
+    width: 42px;
+    height: 42px;
+    vertical-align: middle;
+}
+.card .top .title .desc {
+    color: #bbb;
+    font-size: 14px;
+    margin: 20px 0;
+}
+.card .top .btn {
+    position: absolute;
+    right: 30px;
+    top: 20px;
+}
 </style>

--
Gitblit v1.9.3