hanbaoshan
2020-10-23 28c0c2dcec08b4932a4fc5bfd6bcf0dc036edb23
应用中心-算法软件实时显示安装/升级进度
1个文件已修改
202 ■■■■■ 已修改文件
src/pages/ai/index/App.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/ai/index/App.vue
@@ -23,10 +23,16 @@
                <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,43 @@
                          </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
                                  v-if="!item.isDefault"
                                  @click="unLoad(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
@@ -448,24 +480,27 @@
    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;
      });
    },
    isAdmin() {
    // 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") &&
        sessionStorage.getItem("userInfo") !== ""
@@ -477,9 +512,12 @@
      return false;
    },
  },
  data() {
  data () {
    return {
      sdkList: [],
      installedList: [],
      ungradeList: [],
      notInstalledList: [],
      buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [],
      activeName: "myAlgorithm",
      patchUpdateStatus: "",
@@ -525,7 +563,7 @@
      }
    }
  },
  mounted() {
  mounted () {
    // 获取所有应用
    this.getAllSdk();
    this.getAllApps();
@@ -534,11 +572,11 @@
    this.getUnActivedAppList();
  },
  methods: {
    isShow(authority) {
    isShow (authority) {
      return this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1
    },
    //离线安装
    offlineInstall() {
    offlineInstall () {
      this.installDialogVisible = false;
      this.isInstall = true;
      //安装
@@ -568,7 +606,7 @@
        });
      })
    },
    downloadApp(app, action) {
    downloadApp (app, action) {
      if (action == 'upgrade') {
        app.upgradeLoading = true;
      } else {
@@ -611,7 +649,7 @@
      this.appUpgreading = true;
      this.startAutoFresh();
    },
    async getAllApps() {
    async getAllApps () {
      let iArry = []
      let sArry = []
@@ -637,19 +675,19 @@
      this.storeApps = sArry;
    },
    //卸载应用
    unLoad(app) {
    unLoad (app) {
      app.unloadLoading = true;
      let _this = this;
      removeApp({ appId: app.id }).then(res => {
        if (res && res.success) {
          setTimeout(() => {
            app.unloadLoading = false;
            _this.getAllApps();
            window.parent.postMessage({
              msg: "AppUpdate"
            }, '*')
          }, 3000);
          //setTimeout(() => {
          app.unloadLoading = false;
          _this.getAllApps();
          window.parent.postMessage({
            msg: "AppUpdate"
          }, '*')
          //}, 3000);
        }
      }).catch(e => {
        console.log(e);
@@ -664,7 +702,7 @@
    //   this.activeCode = '';
    //   this.activedSdkOrApp = this.newActInfo()
    // },
    actSdkOrApp(id, type = 'sdk') {
    actSdkOrApp (id, type = 'sdk') {
      this.actType = type;
      this.actId = id;
      this.actDrawerShow = true;
@@ -672,7 +710,7 @@
      this.activeCode = '';
      this.activedSdkOrApp = this.newActInfo()
    },
    newActInfo() {
    newActInfo () {
      return {
        activateCode: '',
        productName: '',
@@ -682,7 +720,7 @@
        devIds: ''
      }
    },
    getUnActivedList() {
    getUnActivedList () {
      getUnActivedSdk().then(res => {
        if (res.code == 200) {
          this.unActivedSDKList = res.data;
@@ -690,14 +728,14 @@
      })
    },
    getUnActivedAppList() {
    getUnActivedAppList () {
      getUnActivedApp().then(res => {
        if (res.code == 200) {
          this.unActivedAppList = res.data;
        }
      });
    },
    actived() {
    actived () {
      let _this = this;
      if (this.actType == 'sdk') {
        //激活算法
@@ -735,12 +773,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;
@@ -778,22 +816,50 @@
    },
    onFileAdded(f) {
    onFileAdded (f) {
      this.patchUpdateStatus = "";
    },
    async getAllSdk() {
    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;
        res.data.forEach(item => {
          let obj = Object.assign({ unloadLoading: false, upgradeLoading: false }, item)
          if (obj.progressMsg !== "" && obj.progressMsg !== "已安装") {
            obj.upgradeLoading = true;
            this.appUpgreading = true;
            this.startAutoFresh();
          }
          //算法软件 已安装其中包含待升级 未安装
          item.installed ? installedList.push(obj) : unInstalledList.push(obj)
        });
        // this.sdkList = res.data.map((i, index) => {
        //   if (i.progressMsg !== "" && i.progressMsg !== "已安装") {
        //     i.upgradeLoading = true;
        //     this.appUpgreading = true;
        //     this.startAutoFresh();
        //   }
        //   this.$set(i, "isEdit", false);
        //   return i;
        // });
      }
      this.installedList = installedList;
      this.notInstalledList = unInstalledList;
    },
    donwload(item) {
      this.downloading = true;
    donwload (item) {
      debugger
      item.upgradeLoading = true;
      //this.downloading = true;
      this.downloadItem = item.id;
      downloadSdk({ path: item.id })
@@ -802,7 +868,8 @@
            type: "success",
            message: "算法已安装"
          });
          this.downloading = false;
          item.upgradeLoading = false;
          //this.downloading = false;
          this.downloadItem = "";
          this.getAllSdk();
        })
@@ -811,19 +878,22 @@
            type: "warning",
            message: err.data
          });
          this.downloading = false;
          item.upgradeLoading = false;
          //this.downloading = false;
          this.downloadItem = "";
        });
        // 开启自动刷新
      this.appUpgreading = true;
      this.startAutoFresh();
    },
    inputBlur(item) {
    inputBlur (item) {
      // console.log(item, '修改名称')
      this.$set(item, "isEdit", false);
    },
    handleTabClick() {
    handleTabClick () {
    },
    startAutoFresh() {
    startAutoFresh () {
      if (this.freshTimer) {
        clearTimeout(this.freshTimer)
      }
@@ -906,7 +976,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;
@@ -931,7 +1001,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 {
@@ -1093,16 +1163,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%;