From a2ebd9a92a375b0b6898d532d3fee782b5fd8f49 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期四, 15 十月 2020 19:22:57 +0800 Subject: [PATCH] 修复权限设置 --- src/pages/labelTrack/index/App.vue | 215 +++++++++++++++++ src/pages/desktop/index/App.vue | 37 ++ src/components/LeftNav.vue | 47 ++- src/pages/ai/index/App.vue | 162 ++++++------ src/pages/vindicate/index/App.vue | 30 +- src/pages/index/App.vue | 46 ++- src/pages/labelTrack/index/api.ts | 20 + package.json | 2 src/components/fTemplate.vue | 4 src/pages/settings/components/BasicSetting.vue | 48 +++ src/pages/cameraAccess/index/VideoManage.vue | 38 +-- src/pages/labelTrack/index/main.ts | 13 + src/pages/analysisPower/index/App.vue | 25 + 13 files changed, 516 insertions(+), 171 deletions(-) diff --git a/package.json b/package.json index a95446e..719d2f9 100644 --- a/package.json +++ b/package.json @@ -84,4 +84,4 @@ "keywords": [], "author": "", "license": "ISC" -} +} \ No newline at end of file diff --git a/src/components/LeftNav.vue b/src/components/LeftNav.vue index 86e0a7c..1fb7a61 100644 --- a/src/components/LeftNav.vue +++ b/src/components/LeftNav.vue @@ -151,9 +151,12 @@ </el-submenu> </el-menu> </el-tab-pane> - <el-tab-pane label="闆嗙兢" name="cluster" :style="`height:${height - 56}px;`" v-if="showCluster"> - - </el-tab-pane> + <el-tab-pane + label="闆嗙兢" + name="cluster" + :style="`height:${height - 56}px;`" + v-if="showCluster" + ></el-tab-pane> <el-tab-pane label="鏁版嵁鏍�" name="dataStack" @@ -290,13 +293,32 @@ return true; }, showCam() { - return this.appName === "Camera" || this.appName === "Search"; + debugger + return this.appName === "Camera" || (this.appName === "Search" && this.buttonAuthority.indexOf("search:camera") >= 0); }, showCluster() { - return this.appName === "Cluster" + return this.appName === "Cluster"; }, + // 鏁版嵁鏍堥厤缃繀椤绘樉绀恒�� 妫�绱㈤�氳繃鏉冮檺鎺у埗鏄剧ず, 鏈畨瑁呮暟鎹爤涔熶笉鏄剧ず showDataStack() { - return this.appName === "DataStack" || this.appName === "Search"; + if (this.appName === "DataStack") { + return true; + } + + if (this.appName === "Search") { + // 鏈畨瑁呮暟鎹爤閰嶇疆 + if (this.installedApps.indexOf("dataStack") >= 0) { + if (this.isAdmin) { + return true; + } + + if (this.buttonAuthority.indexOf("search:stack") >= 0) { + return true; + } + } + } + + return false; }, showLock() { return this.edit; @@ -329,6 +351,7 @@ dataStack: "videoMonitor:dataStack", activeIndexVideo: "", buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], + installedApps: sessionStorage.getItem("apps") || [], loginName: JSON.parse(sessionStorage.getItem("userInfo")).username || "鐢ㄦ埛鍚�", searchTypeOptions: [ { @@ -565,11 +588,11 @@ promiseArr.push(createCamera(camera)); } let _this = this; - Promise.allSettled(promiseArr).then(res=>{ - res.forEach(item=>{ - if(item.status === 'fulfilled'){ + Promise.allSettled(promiseArr).then(res => { + res.forEach(item => { + if (item.status === 'fulfilled') { succeed++; - }else{ + } else { failed++; } }); @@ -579,10 +602,10 @@ message: "鎿嶄綔瀹屾垚, 瀵煎叆鎴愬姛:" + succeed + "涓� 澶辫触:" + failed + "涓�" }) _this.TreeDataPool.fetchTreeData(); - }).catch(e=>{ + }).catch(e => { console.log(e) }); - + } } catch (e) { this.menuLoading = false diff --git a/src/components/fTemplate.vue b/src/components/fTemplate.vue index f095c00..6d0e485 100644 --- a/src/components/fTemplate.vue +++ b/src/components/fTemplate.vue @@ -29,7 +29,7 @@ } }, computed: { - isAdmin () { + isAdmin() { if ( sessionStorage.getItem('userInfo') && sessionStorage.getItem('userInfo') !== '' @@ -41,7 +41,7 @@ } return false }, - isShow () { + isShow() { if (this.isAdmin) { return true } else if ( diff --git a/src/pages/ai/index/App.vue b/src/pages/ai/index/App.vue index ba070c3..653f3cc 100644 --- a/src/pages/ai/index/App.vue +++ b/src/pages/ai/index/App.vue @@ -8,7 +8,7 @@ </div> </div> <!-- 瓒呯骇绠$悊鍛樺彲瑙� --> - <div class="super" v-if="isSuperUser"> + <div class="super"> <div class="left-box"> <!-- <div class="title"> <label>绠楁硶搴�</label> @@ -206,7 +206,7 @@ <el-tab-pane label="绂荤嚎鍗囩骇/瀹夎" name="upgradeOrInstallation" - v-show="activeName==='upgradeOrInstallation'" + v-if="isShow('algorithmManage:insOffLine')" > <div class="tab-content"> <div class="action-bar"> @@ -222,7 +222,7 @@ </div> </div> </el-tab-pane> - <el-tab-pane label="搴旂敤涓績" name="algorithmMall" v-show="activeName==='algorithmMall'"> + <el-tab-pane label="搴旂敤涓績" name="algorithmMall" v-if=" isShow('algorithmManage:buy')"> <div class="tab-content"> <p class="src-title">绠楁硶杞欢</p> <div class="store-list flex-list"> @@ -442,29 +442,40 @@ FileUploader }, computed: { - notInstalledList () { + notInstalledList() { return this.TaskMange.list1.filter(sdk => { return sdk.installed === false; }); }, - installedList () { + installedList() { return this.TaskMange.list1.filter(sdk => { return sdk.installed === true; }); }, - ungradeList () { + ungradeList() { // 鍗囩骇澶勭悊浼氬鑷撮噸澶嶇殑key,闇�瑕佷慨鏀� return []; return this.TaskMange.list1.filter(sdk => { return sdk.isUpgrade === true; }); }, + isAdmin() { + if ( + sessionStorage.getItem("userInfo") && + sessionStorage.getItem("userInfo") !== "" + ) { + let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username; + return loginName === "superadmin" || loginName === "basic"; + } + return false; + }, }, - data () { + data() { return { TaskMange: new TaskManage, VideoManageData: new VideoManageData, + buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], activeName: "myAlgorithm", patchUpdateStatus: "", dragging: false, @@ -554,7 +565,7 @@ }, watch: { list2: { - handler (newVal, oldVal) { + handler(newVal, oldVal) { // window.console.log(newVal, oldVal, '鐩戝惉list2') if (newVal !== oldVal) { // window.console.log(newVal, '鐩戝惉list2') @@ -575,13 +586,12 @@ } } }, - mounted () { + mounted() { this.getAllApps(); this.findAllSdk(); this.findByType(); this.getBaseList(); this.findAll(); - this.getUser(); this.getUnActivedList(); this.getUnActivedAppList(); // this.TaskMange.findAllSdk(); @@ -589,7 +599,10 @@ this.VideoManageData.init(); }, methods: { - offlineInstall () { + isShow(authority) { + return this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1 + }, + offlineInstall() { this.installDialogVisible = false; this.isInstall = true; //瀹夎 @@ -617,7 +630,7 @@ }); }) }, - downloadApp (app) { + downloadApp(app) { app.installLoading = true; let _this = this; installApp({ path: app.id }).then(res => { @@ -632,7 +645,7 @@ } }) }, - getAllApps () { + getAllApps() { let _this = this; _this.installedApps = []; _this.storeApps = []; @@ -654,7 +667,7 @@ }) }, //鍗歌浇搴旂敤 - unLoad (app) { + unLoad(app) { app.unloadLoading = true; let _this = this; removeApp({ appId: app.id }).then(res => { @@ -678,7 +691,7 @@ // this.activeCode = ''; // this.activedSdkOrApp = this.newActInfo() // }, - actSdkOrApp (id, type = 'sdk') { + actSdkOrApp(id, type = 'sdk') { this.actType = type; this.actId = id; this.actDrawerShow = true; @@ -686,7 +699,7 @@ this.activeCode = ''; this.activedSdkOrApp = this.newActInfo() }, - newActInfo () { + newActInfo() { return { activateCode: '', productName: '', @@ -696,7 +709,7 @@ devIds: '' } }, - getUnActivedList () { + getUnActivedList() { getUnActivedSdk().then(res => { if (res.code == 200) { this.unActivedSDKList = res.data; @@ -704,7 +717,7 @@ }) }, - getUnActivedAppList () { + getUnActivedAppList() { getUnActivedApp().then(res => { if (res.code == 200) { this.unActivedAppList = res.data; @@ -712,10 +725,10 @@ }); }, - installFormat (percentage) { + installFormat(percentage) { return percentage === 100 ? '瀹夎鎴愬姛' : `${percentage}%`; }, - actived () { + actived() { let _this = this; if (this.actType == 'sdk') { //婵�娲荤畻娉� @@ -753,12 +766,12 @@ }); } }, - getCodeDetail () { }, - checkMyAlgorith () { + getCodeDetail() { }, + checkMyAlgorith() { this.actDrawerShow = false; this.activeName = "myAlgorithm"; }, - onFileUpload (file) { + onFileUpload(file) { //this.patchUpdateStatus = `<span style="color:green">涓婁紶鎴愬姛, 鐐瑰嚮鍗囩骇鎸夐挳寮�濮嬪畨瑁�</span>`; this.patchFile = { ...file }; this.fileAdded = true; @@ -870,12 +883,12 @@ }, - onFileAdded (f) { + onFileAdded(f) { ; this.patchUpdateStatus = ""; }, // 鏍¢獙杈撳叆鐨勬槸鍚︽槸鏁板瓧 - valiNum (value) { + valiNum(value) { if (value) { let re = /[^\-?\d.]*$/; if (!re.test(value)) { @@ -892,7 +905,7 @@ } }, // 宸﹁竟鎷栧姩妯″潡寰楁嫋鍔ㄧ粨鏉熷悗鐨勮Е鍙戝嚱鏁� - endLeft (env) { + endLeft(env) { this.dragging = false; let taskId = env.to.id; let sdkId = this.TaskMange.list1[env.oldIndex].id; @@ -933,24 +946,24 @@ this.addTaskSdk(json); }, // 鍙宠竟鎷栧姩妯″潡寮�濮嬫嫋鍔ㄨЕ鍙戝嚱鏁� - startRight (env) { + startRight(env) { this.$nextTick(() => { this.dragging = true; }); // window.window.console.log(env, "right start"); }, // 鍙宠竟鎷栧姩妯″潡鎷栧姩缁撴潫瑙﹀彂鍑芥暟 - endRight (env) { + endRight(env) { // window.window.console.log(env, "right end"); }, - clickSet (data) { + clickSet(data) { if (data.isSetting) { data.isSetting = false; } else { data.isSetting = true; } }, - clickDel (data, Index) { + clickDel(data, Index) { this.$confirm("鎻愮ず锛氬垹闄ゅ悗锛屾浠诲姟鍦ㄦ憚鍍忔満涓殑搴旂敤澶辨晥锛屾槸鍚﹀垹闄わ紵", { center: true, showConfirmButton: true, @@ -963,7 +976,7 @@ }) .catch(err => { }); }, - clickSetAlgo (row, data) { + clickSetAlgo(row, data) { // window.console.log(row, data, "缂栬緫浠诲姟涓煇涓�涓畻娉�"); if (row.isShowSetAlgo && data.id === this.TaskMange.currentAlgoId) { row.isShowSetAlgo = false; @@ -1029,7 +1042,7 @@ // }); } }, - async getRulesByTaskSdk (taskId, sdkId) { + async getRulesByTaskSdk(taskId, sdkId) { let res = await getRulesByTaskSdk({ taskId: taskId, sdkId: sdkId @@ -1065,7 +1078,7 @@ this.argsList = JSON.parse(JSON.stringify(this.TaskMange.argsList)); } }, - async findAllSdk () { + async findAllSdk() { let res = await findAllSdk(); if (res && res.success) { this.TaskMange.list1 = res.data.map((i, index) => { @@ -1082,7 +1095,7 @@ }); } }, - addTask () { + addTask() { let obj = { id: "", name: "浠诲姟" + this.TaskMange.list2.length, @@ -1098,7 +1111,7 @@ taskArea.scrollTop = taskArea.scrollHeight; }); }, - async findAll () { + async findAll() { let res = await findAll(); if (res && res.success) { if (res.data && res.data.length !== 0) { @@ -1135,7 +1148,7 @@ } } }, - clickDelSdk (task, sdk) { + clickDelSdk(task, sdk) { this.$confirm( "鎻愮ず锛氬垹闄ゅ悗锛屾绠楁硶鍦ㄦ湰浠诲姟涓Щ闄わ紝鍚屾椂鍦ㄦ憚鍍忔満涓殑搴旂敤澶辨晥锛屾槸鍚﹀垹闄わ紵", { @@ -1151,7 +1164,7 @@ }) .catch(err => { }); }, - selectChange (event, type, data) { + selectChange(event, type, data) { if (type === "options1") { // window.window.console.log(type, data, "閫夋嫨涓嬫媺妗�"); data.options1.map(i => { @@ -1162,7 +1175,7 @@ } }, // 鍒犻櫎浠诲姟绠楁硶 - async delTaskSdk (task, sdk) { + async delTaskSdk(task, sdk) { let json = { taskId: task.id, sdkId: sdk.id @@ -1182,7 +1195,7 @@ } }, // 鍒犻櫎浠诲姟 - async deleteTask (data, index) { + async deleteTask(data, index) { // window.console.log(data, "deleteTask"); let res = await deleteTask({ taskId: data.id }); // this.$toast({ @@ -1199,7 +1212,7 @@ } }, // 鏇存柊浠诲姟鐘舵�� - async updateTaskStatus (data) { + async updateTaskStatus(data) { // window.console.log(data, '鏇存柊浠诲姟鐘舵��') let json = { taskId: data.id, @@ -1217,7 +1230,7 @@ }); }, // 鏇存柊浠诲姟鍚嶇О - async updateTaskName (data) { + async updateTaskName(data) { let json = { taskId: data.id, taskName: data.name @@ -1237,7 +1250,7 @@ } }, // 鑾峰彇搴曞簱鏁版嵁 - async getBaseList () { + async getBaseList() { // let res = await getTagList(); // if (res && res.success) { // let filter = res.data.filter(i => { @@ -1266,7 +1279,7 @@ ]; }, // 鑾峰彇绠楁硶鍙傛暟 - async getSdkArgs (data) { + async getSdkArgs(data) { let res = await getSdkArgs({ sdkId: data.id, scope: "TASKRULE" @@ -1288,7 +1301,7 @@ } }, // 鏌ヨ瀛楀吀 - async findByType () { + async findByType() { let res = await findByType(); if (res && res.success) { let list = res.data.RULECOMPUTEBETWEEN.map(i => { @@ -1301,17 +1314,17 @@ } }, // 绠楁硶閰嶇疆锛屾柊寤� - add () { + add() { this.TaskMange.argsList.push( JSON.parse(JSON.stringify(this.TaskMange.baseObject)) ); }, // 绠楁硶閰嶇疆 鍒犻櫎 - delRule (index) { + delRule(index) { this.TaskMange.argsList.splice(index, 1); }, // 绠楁硶鍙傛暟淇濆瓨 - async save () { + async save() { let list = this.TaskMange.argsList.map(i => { let obj = {}; obj.id = i.id; @@ -1344,7 +1357,7 @@ } } }, - getDefault () { + getDefault() { this.deleteTaskSdkRule( this.TaskMange.currentTaskId, this.TaskMange.currentAlgoId @@ -1355,7 +1368,7 @@ ); }); }, - async deleteTaskSdkRule (taskId, sdkId) { + async deleteTaskSdkRule(taskId, sdkId) { let json = { taskId: taskId, sdkId: sdkId @@ -1375,7 +1388,7 @@ } }, // 缁欎换鍔℃坊鍔犵畻娉� - async addTaskSdk (data) { + async addTaskSdk(data) { let res = await addTaskSdk(data); if (res && res.success) { // window.console.log(res, 'res') @@ -1383,7 +1396,7 @@ } }, // 鏂版坊鍔犱换鍔� - async addTaskAsync (name) { + async addTaskAsync(name) { let res = await addTask({ taskname: name }); // this.$toast({ // type: res.success ? "success" : "error", @@ -1399,7 +1412,7 @@ this.findAll(); } }, - cancle (row) { + cancle(row) { if (row.isShowSetAlgo) { row.isShowSetAlgo = false; } @@ -1409,12 +1422,12 @@ this.$set(i, "isSelect", false); }); }, - cancleTask (row) { + cancleTask(row) { if (row.isSetting) { row.isSetting = false; } }, - commandAlgo (command, row, item) { + commandAlgo(command, row, item) { if (command === 1) { // console.log('璁剧疆绠楁硶') this.clickSetAlgo(row, item); @@ -1424,26 +1437,13 @@ this.clickDelSdk(row, item); } }, - commandTask (command, row) { + commandTask(command, row) { if (command === 1) { //缂栬緫浠诲姟 this.clickSet(row); } }, - getUser () { - // console.log("鐧诲綍鐢ㄦ埛",JSON.parse(sessionStorage.getItem("userInfo")).username) - if ( - sessionStorage.getItem("userInfo") && - (JSON.parse(sessionStorage.getItem("userInfo")).username == - "superadmin" || - JSON.parse(sessionStorage.getItem("userInfo")).username == "basic") - ) { - this.isSuperUser = true; - } else { - this.isSuperUser = false; - } - }, - donwload (item) { + donwload(item) { this.downloading = true; this.downloadItem = item.id; @@ -1467,15 +1467,15 @@ this.downloadItem = ""; }); }, - commandAlgLib (item) { + commandAlgLib(item) { this.$set(item, "isEdit", true); }, - inputBlur (item) { + inputBlur(item) { // console.log(item, '淇敼鍚嶇О') this.$set(item, "isEdit", false); }, - cleanTemplateForm () { + cleanTemplateForm() { this.appSceneForm.name = ""; this.appSceneForm.desc = ""; this.appSceneForm.rules = ""; @@ -1483,10 +1483,10 @@ this.$refs.ruleEditor.cleanRule(); }, - handleTabClick () { + handleTabClick() { }, - handleCreateScene () { + handleCreateScene() { this.sceneDialogVisible = true; this.dialogTitle = '鍒涘缓鍦烘櫙妯℃澘'; @@ -1499,10 +1499,10 @@ this.cleanTemplateForm(); }); }, - handleDialogClose () { + handleDialogClose() { this.sceneDialogVisible = false; }, - handleEditScene (item) { + handleEditScene(item) { this.appSceneForm.name = item.name; this.appSceneForm.desc = item.desc; @@ -1594,7 +1594,7 @@ .src-title { //color: #bfbfbf; color: #bbcee8; - font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC'; + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC"; font-weight: 650; font-style: normal; height: 36px; @@ -1619,7 +1619,7 @@ position: absolute; top: 50%; left: 50%; - background: url('/images/algo/green.gif'); + background: url("/images/algo/green.gif"); overflow: hidden; transform: translate(-50%, -50%); .inner-bar { @@ -1941,16 +1941,16 @@ } } .drawer-content { - font-family: 'PingFangSC-Regular'; + font-family: "PingFangSC-Regular"; .el-step__title.is-process { border-color: #3d68e1 !important; color: #3d68e1 !important; - font-family: Tahoma, Helvetica, Arial, '\5B8B\4F53', sans-serif; + font-family: Tahoma, Helvetica, Arial, "\5B8B\4F53", sans-serif; } .el-step__head.is-process { border-color: #3d68e1 !important; color: #3d68e1 !important; - font-family: Tahoma, Helvetica, Arial, '\5B8B\4F53', sans-serif; + font-family: Tahoma, Helvetica, Arial, "\5B8B\4F53", sans-serif; } .el-input { width: 100%; diff --git a/src/pages/analysisPower/index/App.vue b/src/pages/analysisPower/index/App.vue index 688f357..a915dd9 100644 --- a/src/pages/analysisPower/index/App.vue +++ b/src/pages/analysisPower/index/App.vue @@ -50,7 +50,13 @@ </div> <span :class="stretchStyle" @click="strethTable = !strethTable"></span> - <el-button size="small" type="primary" style="float:right" @click="openDrawer">璁剧疆</el-button> + <el-button + size="small" + type="primary" + style="float:right" + @click="openDrawer" + v-if="showSetting" + >璁剧疆</el-button> </div> <el-table @@ -235,6 +241,20 @@ } return ret + }, + isAdmin() { + if ( + sessionStorage.getItem("userInfo") && + sessionStorage.getItem("userInfo") !== "" + ) { + let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username; + return loginName === "superadmin" || loginName === "basic"; + } + + return false; + }, + showSetting() { + return this.isAdmin || this.buttonAuthority.indexOf("analysisPower:set") > -1 } }, data() { @@ -249,7 +269,8 @@ showSysInfo: false, drawer: false, formData: {}, - strethTable: false + strethTable: false, + buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], }; }, mounted() { diff --git a/src/pages/cameraAccess/index/VideoManage.vue b/src/pages/cameraAccess/index/VideoManage.vue index 5e2ba7e..58bb47f 100644 --- a/src/pages/cameraAccess/index/VideoManage.vue +++ b/src/pages/cameraAccess/index/VideoManage.vue @@ -10,21 +10,21 @@ <el-tab-pane :label="firstLabeName" name="camera-info" - v-if="this.TreeDataPool.treeActiveName == 'camera' && isShow('VIDEOCAMERA:camera:info')" + v-if="this.TreeDataPool.treeActiveName == 'camera' && isShow('cameraAccess:cameraInfo')" > <camera-info ref="cameraInfo" /> </el-tab-pane> <el-tab-pane :label="firstLabeName" name="camera-info" - v-if="this.TreeDataPool.treeActiveName == 'dataStack' && isShow('VIDEOCAMERA:dataStack:stackInfo')" + v-if="this.TreeDataPool.treeActiveName == 'dataStack' && isShow('dataStack:cameraInfo')" > <data-stack-info ref="dataStackInfo" /> </el-tab-pane> <el-tab-pane label="鐙珛鍦烘櫙" name="separate-rule" - v-if="this.TreeDataPool.treeActiveName == 'camera' && isShow('VIDEOCAMERA:camera:selfRule')" + v-if="this.TreeDataPool.treeActiveName == 'camera' && isShow('cameraAccess:selfRule')" > <separate-rules ref="sepRule" /> <!-- <local-separate ref="localSeparate" v-else></local-separate> --> @@ -32,7 +32,7 @@ <el-tab-pane label="鐙珛鍦烘櫙" name="separate-rule" - v-if="this.TreeDataPool.treeActiveName == 'dataStack' && isShow('VIDEOCAMERA:dataStack:selfRule')" + v-if="this.TreeDataPool.treeActiveName == 'dataStack' && isShow('dataStack:selfRule')" > <separate-rules ref="sepRule" /> <!-- <local-separate ref="localSeparate" v-else></local-separate> --> @@ -40,7 +40,7 @@ <el-tab-pane label="鑱斿姩鍦烘櫙" name="linkage-rule" - v-if="(isShow('VIDEOCAMERA:camera:linkRule') || isShow('VIDEOCAMERA:dataStack:linkRule')) && this.TreeDataPool.treeActiveName == 'camera'" + v-if="(isShow('cameraAccess:linkRule')) && this.TreeDataPool.treeActiveName == 'camera'" > <linkage-rule ref="linkRule" /> </el-tab-pane> @@ -81,6 +81,7 @@ let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username; return loginName === "superadmin" || loginName === "basic"; } + return false; }, firstLabeName() { @@ -131,26 +132,21 @@ }, created() { if (this.TreeDataPool.treeActiveName == 'camera') { - if (this.isShow('VIDEOCAMERA:camera:info')) { + if (this.isShow('cameraAccess:cameraInfo')) { this.activeName = "camera-info" - } else if (this.isShow('VIDEOCAMERA:camera:selfRule') || this.isShow('VIDEOCAMERA:datastack:selfRule')) { + } else if (this.isShow('cameraAccess:selfRule')) { this.activeName = "separate-rule" - } else if (this.isShow('VIDEOCAMERA:camera:linkRule') || this.isShow('VIDEOCAMERA:datastack:linkRule')) { + } else if (this.isShow('cameraAccess:linkRule')) { this.activeName = "linkage-rule" - } else if (this.isShow('VIDEOCAMERA:camera:resourceCalc') || this.isShow('VIDEOCAMERA:datastack:resourceCalc')) { - this.activeName = "poll-setting" } } else { - if (this.isShow('VIDEOCAMERA:camera:info')) { + if (this.isShow('dataStack:cameraInfo')) { this.activeName = "camera-info" - } else if (this.isShow('VIDEOCAMERA:camera:selfRule') || this.isShow('VIDEOCAMERA:datastack:selfRule')) { + } else if (this.isShow('dataStack:selfRule')) { this.activeName = "separate-rule" - } else if (this.isShow('VIDEOCAMERA:camera:linkRule') || this.isShow('VIDEOCAMERA:datastack:linkRule')) { - this.activeName = "linkage-rule" - } else if (this.isShow('VIDEOCAMERA:camera:resourceCalc') || this.isShow('VIDEOCAMERA:datastack:resourceCalc')) { - this.activeName = "poll-setting" } } + this.TreeDataPool.readonly = true; this.TreeDataPool.gbReadonly = true; this.TreeDataPool.multiple = false; @@ -181,15 +177,7 @@ }, methods: { isShow(authority) { - if (this.isAdmin) { - return true; - } else if (this.buttonAuthority.indexOf("," + authority + ",") > -1) { - return true; - } else if ("videoCamera:pollSetting" === authority) { - return true; - } else { - return false; - } + return this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1 }, handAddDevice(node) { let _this = this; diff --git a/src/pages/desktop/index/App.vue b/src/pages/desktop/index/App.vue index 29c1394..b90ac81 100644 --- a/src/pages/desktop/index/App.vue +++ b/src/pages/desktop/index/App.vue @@ -25,7 +25,25 @@ components: { Desktop, NotificationCenter, NoticeTip, Tools, ToolsEntry }, - + data() { + return { + buttonAuthority: sessionStorage.getItem('buttonAuthoritys') || [] + } + }, + computed: { + isAdmin() { + if ( + sessionStorage.getItem('userInfo') && + sessionStorage.getItem('userInfo') !== '' + ) { + let loginName = JSON.parse(sessionStorage.getItem('userInfo')).username + return ( + loginName === 'superadmin' || loginName === 'basic' + ) + } + return false + } + }, mounted() { document.getElementById('app').style.backgroundImage = process.env.VUE_APP_MAIN_URL; this.showApps(); @@ -58,9 +76,6 @@ this.showApps(); } }); - findAllSdk().then(() => { - - }); }, methods: { showApps() { @@ -69,6 +84,7 @@ getApps().then(rsp => { if (rsp && rsp.success) { _that.$store.state.desktop.docks = []; + let installedApps = []; rsp.data.forEach(function (item) { if (item.installed) { let temp = { @@ -93,13 +109,16 @@ isDefault: item.isDefault } - _that.$store.commit('desktop/addDock', temp); - // console.log(item) - // console.log('apps update') - //console.log(this.$store.state.desktop.docks) - } + // 鍒ゆ柇鏉冮檺 + if (_that.isAdmin || _that.buttonAuthority.indexOf(item.package) >= 0) { + _that.$store.commit('desktop/addDock', temp); + } + installedApps.push(item.package); + } }); + + sessionStorage.setItem("apps", installedApps.join(",")); } }) }, diff --git a/src/pages/index/App.vue b/src/pages/index/App.vue index a3b5f16..11e0516 100644 --- a/src/pages/index/App.vue +++ b/src/pages/index/App.vue @@ -54,6 +54,7 @@ import { tologin, getLoginUserData, getServerName } from './api.ts' import ParticleNetwork from './ParticleNetwork' import Licence from '@/components/licence' +import { getMenuListData, findButtonAuthoritys, findInArr } from "@/api/utils"; export default { name: 'login-pgae', @@ -83,6 +84,17 @@ currentHeight: 1057, currentWidth: 1920 }), + created() { + this.getServerName() + this.getScreenHeight() + }, + mounted() { + console.log(this.serverTitle) + }, + watch: {}, + beforeDestroy() { + window.onresize = null + }, methods: { systemLogin() { this.nullRule = this.rules @@ -138,8 +150,9 @@ type: 'success', message: '鐧诲綍鎴愬姛锛�' }) - // await this.getMenuList() - // this.$router.push('/Layout/Video') + + // 鑾峰彇鏉冮檺 + await this.getMenuList() location.assign("/view/desktop/") return json } else { @@ -174,18 +187,25 @@ sessionStorage.setItem('title', res.data.serverName) } }, + async getMenuList() { + let results = await getMenuListData({}); + if (results && results.success) { + /* 瀛樺偍鏉冮檺 */ + let buttonAuthoritys = results.data; + // console.log(this.$route.query.is_loginsss) + if (results && results.length && this.$route.query.is_login) { + this.$router.replace(results[0].url); + } + sessionStorage.setItem("buttonAuthoritys", "," + buttonAuthoritys + ","); + sessionStorage.setItem("menuInfo", JSON.stringify(results)); + } else { + this.$toast({ + type: "error", + message: "鑿滃崟鑾峰彇澶辫触" + }); + } + }, }, - created() { - this.getServerName() - this.getScreenHeight() - }, - mounted(){ - console.log(this.serverTitle) - }, - watch: {}, - beforeDestroy() { - window.onresize = null - } } </script> <style lang="scss"> diff --git a/src/pages/labelTrack/index/App.vue b/src/pages/labelTrack/index/App.vue new file mode 100644 index 0000000..8741eac --- /dev/null +++ b/src/pages/labelTrack/index/App.vue @@ -0,0 +1,215 @@ +<template> + <div class="mycanvas-container"> + <div class="left"> + <p>灞曠ず瑙嗗彛</p> + <div class="myshow"> + <img :src="mysrc" alt width="100%" /> + <!-- <div id="canvas" style="width:100%;height:100%" class="mycanvas"></div> --> + </div> + </div> + <div class="center"> + <p>鎿嶄綔瑙嗗彛</p> + <div + class="myedit" + ref="myedit" + @mousedown.prevent="onMousedown" + @mousemove="onMousemove" + @contextmenu.prevent + > + <!-- <img src="@/assets/jia.svg" alt=""> --> + <img :src="mysrc" /> + <span + class="myedit-span" + v-for="(item, index) in mydata" + :key="index" + :style="getSpanStyle(item)" + @contextmenu.prevent="onContextmenu(item, $event)" + ></span> + <!-- <div id="canvas" style="width:100%;height:100%" class="mycanvas"></div> --> + </div> + </div> + <div class="right"> + <img src alt class="mybutton" /> + <input v-show="0" ref="file" type="file" class="mybutton" @change="onChange" /> + <button class="mybutton" @click="selectFile">瀵煎叆鍥剧墖</button> + <button class="mybutton">鏂板鏍囨敞</button> + <button class="mybutton">淇敼鏍囨敞</button> + <button class="mybutton">鍒犻櫎</button> + <button class="mybutton">淇濆瓨</button> + </div> + <div class="myMenu" v-show="mymenu.current" :style="mymenu.style"> + <!-- <button @click="onRemoveItem">鍒犻櫎</button> --> + <ui-button type="primary" @click="onRemoveItem">鍒犻櫎</ui-button> + <ui-select></ui-select> + <select name id> + <option value="1">ceshi</option> + </select> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + mysrc: "", + mydata: [], + mymenu: { current: null, style: { left: 0, top: 0 } } + }; + }, + mounted() { + document.addEventListener('mouseup', this.onMouseup) + }, + beforeDestroy() { + document.removeEventListener('mouseup', this.onMouseup) + }, + methods: { + getXY(e) { + let rect = this.$refs.myedit.getBoundingClientRect() + return { + x: e.clientX - rect.left, + y: e.clientY - rect.top + } + }, + // 涓婁紶鍥剧墖1 + onChange(e) { + this.mysrc = window.URL.createObjectURL(e.target.files[0]); + e.target.value = '' + }, + // 涓婁紶鍥剧墖2, + selectFile() { + this.$refs.file.click(); + }, + onMousedown(e) { + this.mymenu.current = null + let { x, y } = this.getXY(e) + this.currentItem = { x, y, w: 0, h: 0, now: Date.now() } + this.startPos = { x, y } + this.mydata.push(this.currentItem) + }, + onMousemove(e) { + if (!this.currentItem) return; + let { x, y } = this.getXY(e) + this.currentItem.w = Math.abs(x - this.startPos.x) + this.currentItem.h = Math.abs(y - this.startPos.y) + }, + onMouseup(e) { + this.currentItem = this.startPos = null; + this.mydata = this.mydata.filter(_ => _.w > 10 && _.h > 10) + }, + onContextmenu(item, e) { + this.mymenu = { + current: item, + style: { + top: e.clientY + 'px', + left: e.clientX + 'px' + } + } + }, + onRemoveItem() { + this.mydata.splice(this.mydata.indexOf(this.mymenu.current), 1) + this.mymenu = { ...this.mymenu, current: null } + }, + getSpanStyle(item) { + return { + width: `${item.w}px`, + height: `${item.h}px`, + top: `${item.y}px`, + left: `${item.x}px` + }; + } + } +}; +</script> +<style lang="less" scoped> +// 璁剧疆缁樺浘鏍峰紡1 +body { + user-select: none; +} + +.myMenu { + position: fixed; + top: 400px; + left: 400px; + width: 100px; + padding: 8px 0; + background-color: #fff; + > * { + width: 100%; + } +} + +#canvas > div { + /* border: 2px solid green; */ + position: absolute; + background-color: transparent; +} + +#canvas > div > span { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-family: simsun; + font-size: 9pt; +} + +// 璁剧疆缁樺浘鏍峰紡2 + +.mycanvas-container { + display: flex; + justify-content: center; + align-items: center; + + .left, + .center, + .right { + width: 300px; + // height: 520px; + margin: 20px; + + p { + text-align: center; + } + + .myshow, + .myedit { + width: 300px; + // height: 500px; + border: 1px solid #000; + position: relative; + .myedit-span { + position: absolute; + border: 1px dashed #fff; + background: url("/images/cameraAccess/video.png") no-repeat center + center; + background-size: contain; + } + + .mycanvas { + border: 1px solid pink; + position: absolute; + top: 0; + left: 0; + } + + img { + width: 100%; + } + } + } + + .right { + width: 150px; + display: flex; + justify-content: center; + align-items: left; + flex-direction: column; + + .mybutton { + margin-top: 20px; + display: block; + } + } +} +</style> \ No newline at end of file diff --git a/src/pages/labelTrack/index/api.ts b/src/pages/labelTrack/index/api.ts new file mode 100644 index 0000000..05fb010 --- /dev/null +++ b/src/pages/labelTrack/index/api.ts @@ -0,0 +1,20 @@ +import request from '@/scripts/httpRequest' +import qs from 'qs' + +// Post +export const tologin = (query: any) => { + return request({ + url: '/data/api-u/sys/login', + method: 'post', + data: qs.stringify(query) + }) +} + +// get +export const testDBCompare = (query: any) => { + return request({ + url: '../../data/api-v/face/testEachCompareAll', + method: 'get', + params: query + }) +} diff --git a/src/pages/labelTrack/index/main.ts b/src/pages/labelTrack/index/main.ts new file mode 100644 index 0000000..72eb673 --- /dev/null +++ b/src/pages/labelTrack/index/main.ts @@ -0,0 +1,13 @@ +import Vue from 'vue'; +import App from './App.vue' + +import ElementUI from 'element-ui'; +import 'element-ui/lib/theme-chalk/index.css'; +import "@/assets/css/element-variables.scss"; + +Vue.use(ElementUI); + +new Vue({ + el: '#app', + render: h => h(App) +}); diff --git a/src/pages/settings/components/BasicSetting.vue b/src/pages/settings/components/BasicSetting.vue index 437cf00..3c05bf4 100644 --- a/src/pages/settings/components/BasicSetting.vue +++ b/src/pages/settings/components/BasicSetting.vue @@ -8,7 +8,7 @@ type="border-card" > <!-- 鏈満淇℃伅 --> - <el-tab-pane label="鏈満淇℃伅" name="first"> + <el-tab-pane label="鏈満淇℃伅" name="sysInfo" v-if="isShow('settings:sysInfo')"> <el-menu :default-openeds="openeds" background-color="#fff" @@ -179,7 +179,7 @@ </el-tab-pane> <!-- 鏃堕棿閰嶇疆 --> - <el-tab-pane label="鏃堕棿閰嶇疆" name="second"> + <el-tab-pane label="鏃堕棿閰嶇疆" name="timeSet" v-if="isShow('settings:timeSet')"> <el-form label-width="100px"> <el-form-item label="璁惧鏃堕棿"> <!-- <el-input v-model="equipmentTime" placeholder="璇疯緭鍏�" size="small"></el-input> --> @@ -269,7 +269,7 @@ </el-tab-pane> <!-- 闆嗙兢绠$悊 --> - <el-tab-pane label="闆嗙兢绠$悊" name="third"> + <el-tab-pane label="闆嗙兢绠$悊" name="cluster" v-if="isShow('settings:cluster')"> <cluster-management></cluster-management> </el-tab-pane> <!-- <el-tab-pane label="澶栭儴璁块棶" name="fourth"> @@ -312,11 +312,11 @@ </el-submenu> </el-menu> </el-tab-pane>--> - <el-tab-pane label="鏉冮檺绠$悊" name="user"> - <authority-management v-if="activeName === 'user'"></authority-management> + <el-tab-pane label="鏉冮檺绠$悊" name="permission" v-if="isShow('settings:permission')"> + <authority-management v-if="activeName === 'permission'"></authority-management> </el-tab-pane> - <el-tab-pane label="骞挎挱璁剧疆" name="radio"> - <radio-set v-if="activeName === 'radio'"></radio-set> + <el-tab-pane label="骞挎挱璁剧疆" name="broadcast" v-if="isShow('settings:broadcast')"> + <radio-set v-if="activeName === 'broadcast'"></radio-set> </el-tab-pane> </el-tabs> </div> @@ -360,7 +360,18 @@ })) }) return options - } + }, + isAdmin() { + if ( + sessionStorage.getItem("userInfo") && + sessionStorage.getItem("userInfo") !== "" + ) { + let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username; + return loginName === "superadmin" || loginName === "basic"; + } + + return false; + }, }, directives: { focus: { @@ -374,7 +385,7 @@ loading: true, loadingText: "", gutter: 10, - activeName: "first", + activeName: "sysInfo", timezone: "", syncType: "1", ntpServer: "", @@ -471,8 +482,22 @@ countyOptions: [] }, webPort: 0, - ntpTestLoading: false + ntpTestLoading: false, + buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], }; + }, + created() { + if (this.isShow("settings:sysInfo")) { + this.activeName = "sysInfo"; + } else if (this.isShow("settings:timeSet")) { + this.activeName = "timeSet"; + } else if (this.isShow("settings:cluster")) { + this.activeName = "cluster"; + } else if (this.isShow("settings:permission")) { + this.activeName = "permission"; + } else if (this.isShow("settings:broadcast")) { + this.activeName = "broadcast"; + } }, mounted() { this.$nextTick(() => { @@ -489,6 +514,9 @@ clearInterval(this.browserTimer); }, methods: { + isShow(authority) { + return this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1 + }, initSysinfo() { this.loadingText = "姝e湪鑾峰彇璁惧淇℃伅..."; getDevInfo().then(rsp => { diff --git a/src/pages/vindicate/index/App.vue b/src/pages/vindicate/index/App.vue index e41e502..7f0e417 100644 --- a/src/pages/vindicate/index/App.vue +++ b/src/pages/vindicate/index/App.vue @@ -1,13 +1,12 @@ <template> <div class="s-system-manage"> <el-tabs - id="systemMaintenance" v-model="activeName" v-loading="loading" :element-loading-text="loadingText" > - <el-tab-pane label="璁惧缁存姢" name="first"> + <el-tab-pane label="璁惧缁存姢" name="device" v-if="isShow('vindicate:device')"> <div class="s-system-maintenance"> <div class="box-card"> <div class="ui-top-view"> @@ -123,7 +122,7 @@ </div> </div> </el-tab-pane> - <el-tab-pane label="鏁版嵁搴撶淮鎶�" name="second"> + <el-tab-pane label="鏁版嵁搴撶淮鎶�" name="dbvdc" v-if="isShow('vindicate:db')"> <div class="box"> <p class="title"> <label>鏁版嵁娓呯悊</label> @@ -172,7 +171,7 @@ timer: null, buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], rebootCron: "", - activeName: "first", + activeName: "device", restartValue: "涓嶉噸鍚�", restartTimeValue: new Date(2019, 9, 10, 18, 40), loading: false, @@ -193,14 +192,13 @@ }, }, upgrading: false, - fileAdded: false + fileAdded: false, }; }, mounted() { this.getRebootCron() - if (!this.isShow('videoSystem:sysManage:sysfix')) { - console.log("榛樿鏄剧ず鏁版嵁搴撶淮鎶�") - this.activeName = "second" + if (!this.isShow('vindicate:device')) { + this.activeName = "dbvdc" } }, computed: { @@ -485,15 +483,15 @@ width: 100%; height: 100%; .el-button--primary { - color: #FFFFFF; - background-color: #3D68E1; - border-color: #3D68E1; + color: #ffffff; + background-color: #3d68e1; + border-color: #3d68e1; } - .el-button--primary.is-disabled, - .el-button--primary.is-disabled:hover, - .el-button--primary.is-disabled:focus, - .el-button--primary.is-disabled:active{ - color: #FFFFFF; + .el-button--primary.is-disabled, + .el-button--primary.is-disabled:hover, + .el-button--primary.is-disabled:focus, + .el-button--primary.is-disabled:active { + color: #ffffff; background-color: #9eb4f0; border-color: #9eb4f0; } -- Gitblit v1.8.0