hanbaoshan
2020-12-20 ecb6cadc3f016cf9968f48e0cc77479a1e56365b
src/pages/ai/index/App.vue
@@ -19,14 +19,20 @@
              @tab-click="handleTabClick"
              style="height: calc(100% - 20px);"
            >
              <el-tab-pane label="已安装" name="myAlgorithm">
              <el-tab-pane label="已激活" name="myAlgorithm">
                <div class="width-new-line task-list" v-show="activeName === 'myAlgorithm'">
                  <p class="src-title">算法软件</p>
                  <div class="flex-list">
                    <div class="wrap-box" v-for="item in ungradeList" :key="'upgrade'+item.id">
                    <!-- <div class="wrap-box" v-for="item in ungradeList" :key="'upgrade'+item.id">
                      <div class="list-choose-item-left">
                        <div class="list-complete-item-handle">
                          <div class="svg-wrap" :class="{willUpGrade:item.isUpgrade}">
                          <div
                            class="svg-wrap"
                            :class="{willUpGrade:item.isUpgrade}"
                            v-loading="item.upgradeLoading"
                            :element-loading-text="item.progressMsg"
                            element-loading-background="rgba(0,0,0,.8)"
                          >
                            <i class="iconfont iconupdate" v-if="item.isUpgrade"></i>
                            <div class="mask">
                              <div class="info-onmask">
@@ -42,9 +48,6 @@
                                >升级</el-button>
                              </div>
                            </div>
                            <!-- <div class="list-complete-item-handle"> -->
                            <!-- <div class="svg-wrap" :class="{willUpGrade:item.isUpgrade}"> -->
                            <img
                              v-if="item.iconBlob"
                              class="baseImg"
@@ -60,14 +63,42 @@
                          </div>
                        </div>
                      </div>
                    </div>
                    </div>-->
                    <div class="wrap-box" v-for="(item) in installedList" :key="item.id">
                      <div class="list-choose-item-left">
                        <div class="list-complete-item-handle">
                          <div class="svg-wrap">
                            <div class="mask flex-center" v-if="!item.isEdit">
                          <div
                            class="svg-wrap"
                            :class="{willUpGrade:item.isUpgrade}"
                            v-loading="item.upgradeLoading"
                            :element-loading-text="item.progressMsg"
                            element-loading-background="rgba(0,0,0,.8)"
                          >
                            <!-- <div class="mask flex-center">
                              <div class="info-onmask">
                                <div>当前版本:{{item.version}}</div>
                              </div>
                            </div>-->
                            <i class="iconfont iconupdate" v-if="item.isUpgrade"></i>
                            <div class="mask" v-if="!item.isDefault || item.isUpgrade">
                              <div class="info-onmask">
                                <div>当前版本:{{item.version}}</div>
                                <div v-if="item.remoteVersion">最新版本:{{item.remoteVersion}}</div>
                              </div>
                              <div class="mask-btn">
                                <el-button
                                  @click="unLoadSdk(item)"
                                  type="primary"
                                  size="small"
                                  class="bot-btn"
                                >卸载</el-button>
                                <el-button
                                  v-if="item.isUpgrade"
                                  @click="donwload(item)"
                                  type="warning"
                                  size="small"
                                  class="bot-btn"
                                >升级</el-button>
                              </div>
                            </div>
                            <img
@@ -108,7 +139,12 @@
                          <span class="iconfont iconxiazai1"></span>
                        </div>
                        <div class="list-complete-item-handle">
                          <div class="svg-wrap">
                          <div
                            class="svg-wrap"
                            v-loading="item.installLoading||item.upgradeLoading"
                            :element-loading-text="item.progressMsg"
                            element-loading-background="rgba(0,0,0,.8)"
                          >
                            <img
                              v-if="item.iconBlob"
                              class="baseImg"
@@ -139,7 +175,7 @@
                            element-loading-background="rgba(0,0,0,.8)"
                          >
                            <i class="iconfont iconupdate" v-if="item.isUpgrade"></i>
                            <div class="mask" v-if="!item.isDefault || item.isUpgrade">
                            <div class="mask" >
                              <div class="info-onmask">
                                <div>当前版本:{{item.version}}</div>
                                <div v-if="item.remoteVersion">最新版本:{{item.remoteVersion}}</div>
@@ -196,6 +232,7 @@
                          >
                            <div class="mask">
                              <el-button
                                size="small"
                                type="primary"
                                class="bot-btn"
                                @click="downloadApp(item)"
@@ -437,7 +474,7 @@
</template>
<script>
import { findAllSdk, downloadSdk, installSdk, getInstallInfo } from "./api";
import { findAllSdk, downloadSdk, installSdk, getInstallInfo, removeSdk} from "./api";
import { getApps, installApp, removeApp, getUnActivedSdk, actPageAlg, getUnActivedApp, actApp } from "@/api/app";
import FileUploader from "@/components/subComponents/FileUpload/index";
@@ -448,23 +485,26 @@
    FileUploader
  },
  computed: {
    notInstalledList() {
      return this.sdkList.filter(sdk => {
        return sdk.installed === false;
      });
    },
    installedList() {
      return this.sdkList.filter(sdk => {
        return sdk.installed === true && !sdk.isUpgrade;
      });
    },
    ungradeList() {
      // 升级处理会导致重复的key,需要修改
      //return [];
      return this.sdkList.filter(sdk => {
        return sdk.isUpgrade === true;
      });
    },
    // notInstalledList () {
    //   return this.sdkList.filter(sdk => {
    //     return sdk.installed === false;
    //   });
    // },
    // installedList () {
    //   return this.sdkList.filter(sdk => {
    //     return sdk.installed === true && !sdk.isUpgrade;
    //   });
    // },
    // ungradeList () {
    //   // 升级处理会导致重复的key,需要修改
    //   let arr = this.sdkList.filter(sdk => {
    //     return sdk.isUpgrade === true;
    //   });
    //   arr.forEach(sdk => {
    //     sdk.upgradeLoading = false;
    //   });
    //   return arr;
    // },
    isAdmin() {
      if (
        sessionStorage.getItem("userInfo") &&
@@ -480,6 +520,9 @@
  data() {
    return {
      sdkList: [],
      installedList: [],
      ungradeList: [],
      notInstalledList: [],
      buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [],
      activeName: "myAlgorithm",
      patchUpdateStatus: "",
@@ -514,8 +557,9 @@
      storeApps: [],
      installFile: {},
      freshTimer: null,
      appUpgreading: false,
      sdkUpgreading: false
      appUpgreading: true,
      sdkUpgreading: true,
      autoRefresh: true,
    }
  },
  directives: {
@@ -527,11 +571,13 @@
  },
  mounted() {
    // 获取所有应用
    this.getAllSdk();
    this.getAllApps();
    this.autoRefreshAppAndSdkState();
    this.getUnActivedList();
    this.getUnActivedAppList();
  },
  beforeDestroy() {
    this.autoRefresh = false;
  },
  methods: {
    isShow(authority) {
@@ -547,11 +593,10 @@
          this.isInstall = false;
          this.$message({
            type: 'success',
            message: '安装成功,将跳转至我的算法中查看'
            message: '安装成功,将跳转至"已激活"中查看'
          });
          setTimeout(() => {
            this.getAllSdk();
            this.getAllApps();
            window.parent.postMessage({
              msg: "AppUpdate"
            }, '*')
@@ -581,18 +626,18 @@
          setTimeout(() => {
            if (action == 'upgrade') {
              app.upgradeLoading = false;
              _this.$notify({
                type: 'success',
                message: '升级成功'
              });
              // _this.$notify({
              //   type: 'success',
              //   message: '升级成功'
              // });
            } else {
              app.installLoading = false;
              _this.$notify({
                type: 'success',
                message: '安装成功'
              });
              // _this.$notify({
              //   type: 'success',
              //   message: '安装成功'
              // });
            }
            _this.getAllApps();
            // _this.getAllApps();
            window.parent.postMessage({
              msg: "AppUpdate"
            }, '*')
@@ -609,7 +654,6 @@
      // 开启自动刷新
      this.appUpgreading = true;
      this.startAutoFresh();
    },
    async getAllApps() {
      let iArry = []
@@ -626,7 +670,6 @@
            obj.upgradeLoading = true;
            this.appUpgreading = true;
            this.startAutoFresh();
          }
          item.installed ? iArry.push(obj) : sArry.push(obj)
@@ -636,26 +679,47 @@
      this.installedApps = iArry;
      this.storeApps = sArry;
    },
    //卸载算法
    unLoadSdk(sdk){
      let _this = this;
      this.$confirm('确定要卸载该算法吗?','提示').then(()=>{
        sdk.unloadLoading = true;
        removeSdk({ sdkId: sdk.id }).then(res => {
          if (res && res.success) {
            sdk.unloadLoading = false;
            _this.getAllSdk();
            window.parent.postMessage({
              msg: "AppUpdate"
            }, '*')
          }
        }).catch(e => {
          console.log(e);
          sdk.unloadLoading = false;
        })
      }).catch( e => {
        console.log(e)
      })
    },
    //卸载应用
    unLoad(app) {
      app.unloadLoading = true;
      let _this = this;
      removeApp({ appId: app.id }).then(res => {
        if (res && res.success) {
          setTimeout(() => {
      this.$confirm('确定要卸载该应用吗?','提示').then(()=>{
        app.unloadLoading = true;
        removeApp({ appId: app.id }).then(res => {
          if (res && res.success) {
            app.unloadLoading = false;
            _this.getAllApps();
            window.parent.postMessage({
              msg: "AppUpdate"
            }, '*')
          }, 3000);
        }
      }).catch(e => {
        console.log(e);
        app.unloadLoading = false;
          }
        }).catch(e => {
          console.log(e);
          app.unloadLoading = false;
        })
      }).catch( e => {
        console.log(e)
      })
    },
    // actSdk (id) {
    //   this.actSdkId = id;
@@ -751,7 +815,6 @@
        _this.installFile = file;
        if (res.success) {
          _this.installDialogVisible = true;
          debugger
          if (res.data.apps.length > 0) {
            _this.installAppPackage = {
              appId: res.data.apps[0].appId,
@@ -783,38 +846,55 @@
    },
    async getAllSdk() {
      let installedList = [];
      let unInstalledList = [];
      let res = await findAllSdk();
      if (res && res.success) {
        this.sdkList = res.data.map((i, index) => {
          this.$set(i, "isEdit", false);
          return i;
        this.sdkUpgreading = false;
        res.data.forEach(item => {
          let obj = Object.assign({ unloadLoading: false, upgradeLoading: false }, item)
          if (obj.progressMsg !== "" && obj.progressMsg !== "已安装") {
            obj.upgradeLoading = true;
            this.sdkUpgreading = true;
          }
          //算法软件 已安装其中包含待升级 未安装
          item.installed ? installedList.push(obj) : unInstalledList.push(obj)
        });
      }
      this.installedList = installedList;
      this.notInstalledList = unInstalledList;
    },
    donwload(item) {
      this.downloading = true;
      item.upgradeLoading = true;
      //this.downloading = true;
      this.downloadItem = item.id;
      downloadSdk({ path: item.id })
        .then(rsp => {
          this.$notify({
            type: "success",
            message: "算法已安装"
          });
          this.downloading = false;
          // this.$notify({
          //   type: "success",
          //   message: "算法已安装"
          // });
          item.upgradeLoading = false;
          //this.downloading = false;
          this.downloadItem = "";
          this.getAllSdk();
        })
        .catch(err => {
          this.$notify({
            type: "warning",
            message: err.data
          });
          this.downloading = false;
          item.upgradeLoading = false;
          //this.downloading = false;
          this.downloadItem = "";
        });
      // 开启自动刷新
      this.sdkUpgreading = true;
    },
    inputBlur(item) {
      // console.log(item, '修改名称')
@@ -823,20 +903,24 @@
    handleTabClick() {
    },
    startAutoFresh() {
      if (this.freshTimer) {
        clearTimeout(this.freshTimer)
    autoRefreshAppAndSdkState() {
      // 关闭后退出
      if (!this.autoRefresh) {
        return;
      }
      if (!this.appUpgreading && !this.sdkUpgreading) {
        this.freshTimer = -1
        return
      if (this.appUpgreading) {
        this.getAllApps();
      }
      this.getAllSdk()
      this.getAllApps()
      if (this.sdkUpgreading) {
        this.getAllSdk();
      }
      this.freshTimer = setTimeout(this.startAutoFresh, 5 * 1000)
      let _this = this
      setTimeout(() => {
        _this.autoRefreshAppAndSdkState();
      }, 500)
    }
  }
};