| | |
| | | </div>
|
| | | </div>
|
| | | <!-- 超级管理员可见 -->
|
| | | <div class="super" v-if="isSuperUser">
|
| | | <div class="super">
|
| | | <div class="left-box">
|
| | | <!-- <div class="title">
|
| | | <label>算法库</label>
|
| | |
| | | <el-tab-pane
|
| | | label="离线升级/安装"
|
| | | name="upgradeOrInstallation"
|
| | | v-show="activeName==='upgradeOrInstallation'"
|
| | | v-if="isShow('algorithmManage:insOffLine')"
|
| | | >
|
| | | <div class="tab-content">
|
| | | <div class="action-bar">
|
| | |
| | | </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">
|
| | |
| | | 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,
|
| | |
| | | },
|
| | | watch: {
|
| | | list2: {
|
| | | handler (newVal, oldVal) {
|
| | | handler(newVal, oldVal) {
|
| | | // window.console.log(newVal, oldVal, '监听list2')
|
| | | if (newVal !== oldVal) {
|
| | | // window.console.log(newVal, '监听list2')
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | mounted () {
|
| | | mounted() {
|
| | | this.getAllApps();
|
| | | this.findAllSdk();
|
| | | this.findByType();
|
| | | this.getBaseList();
|
| | | this.findAll();
|
| | | this.getUser();
|
| | | this.getUnActivedList();
|
| | | this.getUnActivedAppList();
|
| | | // this.TaskMange.findAllSdk();
|
| | |
| | | this.VideoManageData.init();
|
| | | },
|
| | | methods: {
|
| | | offlineInstall () {
|
| | | isShow(authority) {
|
| | | return this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1
|
| | | },
|
| | | offlineInstall() {
|
| | | this.installDialogVisible = false;
|
| | | this.isInstall = true;
|
| | | //安装
|
| | |
| | | });
|
| | | })
|
| | | },
|
| | | downloadApp (app) {
|
| | | downloadApp(app) {
|
| | | app.installLoading = true;
|
| | | let _this = this;
|
| | | installApp({ path: app.id }).then(res => {
|
| | |
| | | }
|
| | | })
|
| | | },
|
| | | getAllApps () {
|
| | | getAllApps() {
|
| | | let _this = this;
|
| | | _this.installedApps = [];
|
| | | _this.storeApps = [];
|
| | |
| | | })
|
| | | },
|
| | | //卸载应用
|
| | | unLoad (app) {
|
| | | unLoad(app) {
|
| | | app.unloadLoading = true;
|
| | | let _this = this;
|
| | | removeApp({ appId: app.id }).then(res => {
|
| | |
| | | // this.activeCode = '';
|
| | | // this.activedSdkOrApp = this.newActInfo()
|
| | | // },
|
| | | actSdkOrApp (id, type = 'sdk') {
|
| | | actSdkOrApp(id, type = 'sdk') {
|
| | | this.actType = type;
|
| | | this.actId = id;
|
| | | this.actDrawerShow = true;
|
| | |
| | | this.activeCode = '';
|
| | | this.activedSdkOrApp = this.newActInfo()
|
| | | },
|
| | | newActInfo () {
|
| | | newActInfo() {
|
| | | return {
|
| | | activateCode: '',
|
| | | productName: '',
|
| | |
| | | devIds: ''
|
| | | }
|
| | | },
|
| | | getUnActivedList () {
|
| | | getUnActivedList() {
|
| | | getUnActivedSdk().then(res => {
|
| | | if (res.code == 200) {
|
| | | this.unActivedSDKList = res.data;
|
| | |
| | | })
|
| | |
|
| | | },
|
| | | getUnActivedAppList () {
|
| | | getUnActivedAppList() {
|
| | | getUnActivedApp().then(res => {
|
| | | if (res.code == 200) {
|
| | | this.unActivedAppList = res.data;
|
| | |
| | | });
|
| | | },
|
| | |
|
| | | installFormat (percentage) {
|
| | | installFormat(percentage) {
|
| | | return percentage === 100 ? '安装成功' : `${percentage}%`;
|
| | | },
|
| | | actived () {
|
| | | actived() {
|
| | | let _this = this;
|
| | | if (this.actType == 'sdk') {
|
| | | //激活算法
|
| | |
| | | });
|
| | | }
|
| | | },
|
| | | 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;
|
| | |
| | |
|
| | | },
|
| | |
|
| | | onFileAdded (f) {
|
| | | onFileAdded(f) {
|
| | | ;
|
| | | this.patchUpdateStatus = "";
|
| | | },
|
| | | // 校验输入的是否是数字
|
| | | valiNum (value) {
|
| | | valiNum(value) {
|
| | | if (value) {
|
| | | let re = /[^\-?\d.]*$/;
|
| | | if (!re.test(value)) {
|
| | |
| | | }
|
| | | },
|
| | | // 左边拖动模块得拖动结束后的触发函数
|
| | | endLeft (env) {
|
| | | endLeft(env) {
|
| | | this.dragging = false;
|
| | | let taskId = env.to.id;
|
| | | let sdkId = this.TaskMange.list1[env.oldIndex].id;
|
| | |
| | | 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,
|
| | |
| | | })
|
| | | .catch(err => { });
|
| | | },
|
| | | clickSetAlgo (row, data) {
|
| | | clickSetAlgo(row, data) {
|
| | | // window.console.log(row, data, "编辑任务中某一个算法");
|
| | | if (row.isShowSetAlgo && data.id === this.TaskMange.currentAlgoId) {
|
| | | row.isShowSetAlgo = false;
|
| | |
| | | // });
|
| | | }
|
| | | },
|
| | | async getRulesByTaskSdk (taskId, sdkId) {
|
| | | async getRulesByTaskSdk(taskId, sdkId) {
|
| | | let res = await getRulesByTaskSdk({
|
| | | taskId: taskId,
|
| | | sdkId: sdkId
|
| | |
| | | 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) => {
|
| | |
| | | });
|
| | | }
|
| | | },
|
| | | addTask () {
|
| | | addTask() {
|
| | | let obj = {
|
| | | id: "",
|
| | | name: "任务" + this.TaskMange.list2.length,
|
| | |
| | | taskArea.scrollTop = taskArea.scrollHeight;
|
| | | });
|
| | | },
|
| | | async findAll () {
|
| | | async findAll() {
|
| | | let res = await findAll();
|
| | | if (res && res.success) {
|
| | | if (res.data && res.data.length !== 0) {
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | clickDelSdk (task, sdk) {
|
| | | clickDelSdk(task, sdk) {
|
| | | this.$confirm(
|
| | | "提示:删除后,此算法在本任务中移除,同时在摄像机中的应用失效,是否删除?",
|
| | | {
|
| | |
| | | })
|
| | | .catch(err => { });
|
| | | },
|
| | | selectChange (event, type, data) {
|
| | | selectChange(event, type, data) {
|
| | | if (type === "options1") {
|
| | | // window.window.console.log(type, data, "选择下拉框");
|
| | | data.options1.map(i => {
|
| | |
| | | }
|
| | | },
|
| | | // 删除任务算法
|
| | | async delTaskSdk (task, sdk) {
|
| | | async delTaskSdk(task, sdk) {
|
| | | let json = {
|
| | | taskId: task.id,
|
| | | sdkId: sdk.id
|
| | |
| | | }
|
| | | },
|
| | | // 删除任务
|
| | | async deleteTask (data, index) {
|
| | | async deleteTask(data, index) {
|
| | | // window.console.log(data, "deleteTask");
|
| | | let res = await deleteTask({ taskId: data.id });
|
| | | // this.$toast({
|
| | |
| | | }
|
| | | },
|
| | | // 更新任务状态
|
| | | async updateTaskStatus (data) {
|
| | | async updateTaskStatus(data) {
|
| | | // window.console.log(data, '更新任务状态')
|
| | | let json = {
|
| | | taskId: data.id,
|
| | |
| | | });
|
| | | },
|
| | | // 更新任务名称
|
| | | async updateTaskName (data) {
|
| | | async updateTaskName(data) {
|
| | | let json = {
|
| | | taskId: data.id,
|
| | | taskName: data.name
|
| | |
| | | }
|
| | | },
|
| | | // 获取底库数据
|
| | | async getBaseList () {
|
| | | async getBaseList() {
|
| | | // let res = await getTagList();
|
| | | // if (res && res.success) {
|
| | | // let filter = res.data.filter(i => {
|
| | |
| | | ];
|
| | | },
|
| | | // 获取算法参数
|
| | | async getSdkArgs (data) {
|
| | | async getSdkArgs(data) {
|
| | | let res = await getSdkArgs({
|
| | | sdkId: data.id,
|
| | | scope: "TASKRULE"
|
| | |
| | | }
|
| | | },
|
| | | // 查询字典
|
| | | async findByType () {
|
| | | async findByType() {
|
| | | let res = await findByType();
|
| | | if (res && res.success) {
|
| | | let list = res.data.RULECOMPUTEBETWEEN.map(i => {
|
| | |
| | | }
|
| | | },
|
| | | // 算法配置,新建
|
| | | 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;
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | getDefault () {
|
| | | getDefault() {
|
| | | this.deleteTaskSdkRule(
|
| | | this.TaskMange.currentTaskId,
|
| | | this.TaskMange.currentAlgoId
|
| | |
| | | );
|
| | | });
|
| | | },
|
| | | async deleteTaskSdkRule (taskId, sdkId) {
|
| | | async deleteTaskSdkRule(taskId, sdkId) {
|
| | | let json = {
|
| | | taskId: taskId,
|
| | | sdkId: sdkId
|
| | |
| | | }
|
| | | },
|
| | | // 给任务添加算法
|
| | | async addTaskSdk (data) {
|
| | | async addTaskSdk(data) {
|
| | | let res = await addTaskSdk(data);
|
| | | if (res && res.success) {
|
| | | // window.console.log(res, 'res')
|
| | |
| | | }
|
| | | },
|
| | | // 新添加任务
|
| | | async addTaskAsync (name) {
|
| | | async addTaskAsync(name) {
|
| | | let res = await addTask({ taskname: name });
|
| | | // this.$toast({
|
| | | // type: res.success ? "success" : "error",
|
| | |
| | | this.findAll();
|
| | | }
|
| | | },
|
| | | cancle (row) {
|
| | | cancle(row) {
|
| | | if (row.isShowSetAlgo) {
|
| | | row.isShowSetAlgo = false;
|
| | | }
|
| | |
| | | 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);
|
| | |
| | | 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;
|
| | |
|
| | |
| | | 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 = "";
|
| | |
| | |
|
| | | this.$refs.ruleEditor.cleanRule();
|
| | | },
|
| | | handleTabClick () {
|
| | | handleTabClick() {
|
| | |
|
| | | },
|
| | | handleCreateScene () {
|
| | | handleCreateScene() {
|
| | | this.sceneDialogVisible = true;
|
| | | this.dialogTitle = '创建场景模板';
|
| | |
|
| | |
| | | this.cleanTemplateForm();
|
| | | });
|
| | | },
|
| | | handleDialogClose () {
|
| | | handleDialogClose() {
|
| | | this.sceneDialogVisible = false;
|
| | | },
|
| | | handleEditScene (item) {
|
| | | handleEditScene(item) {
|
| | | this.appSceneForm.name = item.name;
|
| | | this.appSceneForm.desc = item.desc;
|
| | |
|
| | |
| | | .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;
|
| | |
| | | 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 {
|
| | |
| | | }
|
| | | }
|
| | | .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%;
|