优化前端代码

v1.0.0
youngS 4 years ago
parent 54e9de66b6
commit 3623b36247
  1. 6
      fir_client/src/App.vue
  2. 11
      fir_client/src/components/FirBase.vue
  3. 429
      fir_client/src/components/FirDownload.vue
  4. 18
      fir_client/src/components/FirFooter.vue
  5. 28
      fir_client/src/components/FirHeader.vue
  6. 20
      fir_client/src/components/FirLogin.vue
  7. 22
      fir_client/src/components/FirRegist.vue
  8. 18
      fir_client/src/components/ShortDownload.vue
  9. 19
      fir_client/src/components/apps/FirAppInfosBase.vue
  10. 52
      fir_client/src/components/apps/FirAppInfosbaseinfo.vue
  11. 50
      fir_client/src/components/apps/FirAppInfoscombo.vue
  12. 31
      fir_client/src/components/apps/FirAppInfosdevices.vue
  13. 29
      fir_client/src/components/apps/FirAppInfossecurity.vue
  14. 33
      fir_client/src/components/apps/FirAppInfossupersign.vue
  15. 156
      fir_client/src/components/apps/FirAppInfostimeline.vue
  16. 129
      fir_client/src/components/apps/FirApps.vue
  17. 42
      fir_client/src/components/user/FirSuperSignBase.vue
  18. 5
      fir_client/src/components/user/FirUserOrders.vue
  19. 7
      fir_client/src/components/user/FirUserProfileBase.vue
  20. 5
      fir_client/src/components/user/FirUserProfileCertification.vue
  21. 12
      fir_client/src/components/user/FirUserProfileChangePwd.vue
  22. 37
      fir_client/src/components/user/FirUserProfileInfo.vue
  23. 81
      fir_client/src/components/user/FirUserStorage.vue
  24. 6
      fir_client/src/main.js

@ -16,7 +16,11 @@
<style> <style>
body { body {
background-color: rgba(0, 166, 224, 0.18) background-color: #F6F6F6;
}
html, body {
height: 100%;
} }
@font-face { @font-face {

@ -1,17 +1,16 @@
<template> <template>
<div ref="appbase"> <div ref="appbase">
<canvas ref="canvas" class="canvas" @mousemove="canvas_move" @mouseleave="canvas_leave"></canvas> <canvas ref="canvas" class="canvas" @mousemove="canvas_move" @mouseleave="canvas_leave"/>
<el-container> <el-container>
<el-header> <el-header>
<FirHeader></FirHeader> <FirHeader/>
</el-header> </el-header>
<div class="pbody"> <div class="pbody">
<router-view></router-view> <router-view/>
</div> </div>
<el-footer> <el-footer>
<el-divider/> <el-divider/>
<FirFooter></FirFooter> <FirFooter/>
</el-footer> </el-footer>
</el-container> </el-container>
</div> </div>
@ -52,7 +51,7 @@
<style scoped> <style scoped>
.pbody { .pbody {
padding-top: 20px; padding-top: 30px;
} }
</style> </style>

@ -5,10 +5,10 @@
<div class="wechat_tip_content" v-if="agent === 'wxandroid' || agent === 'wxapple'"> <div class="wechat_tip_content" v-if="agent === 'wxandroid' || agent === 'wxapple'">
<div class="wechat_tip" v-show="agent === 'wxandroid'"> <div class="wechat_tip" v-show="agent === 'wxandroid'">
<i class="triangle-up"></i>请点击右上角<br>选择"在浏览器打开" <i class="triangle-up"/>请点击右上角<br>选择"在浏览器打开"
</div> </div>
<div class="wechat_tip" v-show="agent === 'wxapple'"> <div class="wechat_tip" v-show="agent === 'wxapple'">
<i class="triangle-up"></i>请点击右上角<br>选择"在Safari中打开" <i class="triangle-up"/>请点击右上角<br>选择"在Safari中打开"
</div> </div>
</div> </div>
@ -25,9 +25,9 @@
<div class="cell-container"> <div class="cell-container">
<div class="app-brief"> <div class="app-brief">
<div class="icon-container wrapper"> <div class="icon-container wrapper">
<i class="i bg-path"></i> <i class="i bg-path"/>
<span class="icon"><img <span class="icon"><img
:src="mcurrentappinfo.icon_url"></span> :src="mcurrentappinfo.icon_url" alt=""></span>
<span id="qrcode" class="qrcode"> <span id="qrcode" class="qrcode">
</span> </span>
</div> </div>
@ -99,9 +99,9 @@
<el-input prefix-icon="el-icon-lock" clearable <el-input prefix-icon="el-icon-lock" clearable
placeholder="请输入密码" v-model="password" placeholder="请输入密码" v-model="password"
icon="el-icon-loadings" type="primary" icon="el-icon-loadings" type="primary"
:underline="false"></el-input> :underline="false"/>
</div> </div>
<el-divider v-if="currentappinfo.need_password"></el-divider> <el-divider v-if="currentappinfo.need_password"/>
<button @click="download"> <button @click="download">
<el-link icon="el-icon-loadings" type="primary" <el-link icon="el-icon-loadings" type="primary"
:underline="false"> :underline="false">
@ -184,7 +184,7 @@
<div class="screenshots-section" v-if="imagelist && imagelist.length > 0" style="margin-top: 30%"> <div class="screenshots-section" v-if="imagelist && imagelist.length > 0" style="margin-top: 30%">
<el-divider></el-divider> <el-divider/>
<div v-if="miscomboappinfo.release_id"> <div v-if="miscomboappinfo.release_id">
<h3 v-if="currentappinfo.type === 0"> <h3 v-if="currentappinfo.type === 0">
Android 应用截图 Android 应用截图
@ -198,7 +198,7 @@
<div class="list-wrapper"> <div class="list-wrapper">
<ul> <ul>
<li v-for="screen in imagelist" :key="screen"> <li v-for="screen in imagelist" :key="screen">
<img v-lazy="screen"/> <img v-lazy="screen" alt=""/>
</li> </li>
</ul> </ul>
</div> </div>
@ -230,7 +230,7 @@
<div class="list-wrapper" style="width: 300px;"> <div class="list-wrapper" style="width: 300px;">
<ul> <ul>
<li v-for="sign in signhelplist" :key="sign.url"> <li v-for="sign in signhelplist" :key="sign.url">
<img v-lazy="sign.url" :key="sign.url"/> <img v-lazy="sign.url" :key="sign.url" alt=""/>
<p> <p>
安装引导<br>{{ sign.msg}} 安装引导<br>{{ sign.msg}}
</p> </p>
@ -579,7 +579,7 @@
trident: u.indexOf('Trident') > -1, //IE trident: u.indexOf('Trident') > -1, //IE
presto: u.indexOf('Presto') > -1, //opera presto: u.indexOf('Presto') > -1, //opera
webKit: u.indexOf('AppleWebKit') > -1, // webKit: u.indexOf('AppleWebKit') > -1, //
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, // gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1, //
mobile: !!u.match(/AppleWebKit.*Mobile/i) || !!u.match(/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/), // mobile: !!u.match(/AppleWebKit.*Mobile/i) || !!u.match(/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/), //
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //androiduc android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //androiduc
@ -729,7 +729,7 @@
box-sizing: border-box box-sizing: border-box
} }
.desc-section pre, .releases-section .release-view .version-info .changelog .wrapper, body, html { .desc-section pre, body, html {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif
} }
@ -744,13 +744,6 @@
-webkit-font-smoothing: antialiased -webkit-font-smoothing: antialiased
} }
.no-scroll {
overflow: hidden
}
.text-center {
text-align: center
}
.text-black { .text-black {
color: #505556 color: #505556
@ -840,26 +833,6 @@
text-align: center text-align: center
} }
.show-wechat-notice .out-container, .show-wechat-notice .pattern {
top: 180px
}
.show-wechat-notice .notice-wechat {
height: 180px
}
.notice-wechat {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 0;
background-color: #505556;
box-shadow: 0 -9px 29px -7px rgba(0, 0, 0, .1) inset;
-webkit-transition: all .5s;
transition: all .5s
}
.constraint .main header, .expired .main header, .forbidden .main header, .legal_forbidden .main header, .not_found .main header { .constraint .main header, .expired .main header, .forbidden .main header, .legal_forbidden .main header, .not_found .main header {
opacity: 1; opacity: 1;
@ -889,11 +862,6 @@
line-height: 24px line-height: 24px
} }
.constraint .main .fade-out, .expired .main .fade-out, .forbidden .main .fade-out, .legal_forbidden .main .fade-out, .not_found .main .fade-out {
opacity: 0;
-webkit-transform: translateY(-40px);
transform: translateY(-40px)
}
.constraint .pattern img, .expired .pattern img, .forbidden .pattern img, .legal_forbidden .pattern img, .not_found .pattern img { .constraint .pattern img, .expired .pattern img, .forbidden .pattern img, .legal_forbidden .pattern img, .not_found .pattern img {
-webkit-filter: grayscale(1) -webkit-filter: grayscale(1)
@ -906,63 +874,6 @@
} }
@media screen and (max-width: 425px) {
.error-container pre, .error-container small {
display: none
}
.error-container {
width: 100%;
margin-top: 100px;
margin-bottom: 50px;
text-align: center
}
.error-container h1 {
padding: 0 70px
}
}
.back-btn {
position: fixed;
top: 28px;
left: 28px;
z-index: 3;
width: 60px;
height: 60px;
border: 1px solid #bdc6c7;
border-radius: 60px;
background-color: #fff
}
.back-btn i {
display: block;
margin-top: 29px;
margin-left: 21px
}
.back-btn i:after, .back-btn i:before {
position: absolute;
display: inline-block;
width: 16px;
height: 1px;
background-color: #505556;
content: ' ';
-webkit-transform-origin: left;
transform-origin: left
}
.back-btn i:before {
-webkit-transform: rotateZ(-42deg);
transform: rotateZ(-42deg)
}
.back-btn i:after {
-webkit-transform: rotateZ(42deg);
transform: rotateZ(42deg)
}
.combo .main { .combo .main {
min-width: 960px; min-width: 960px;
max-width: 100% max-width: 100%
@ -995,31 +906,12 @@
text-transform: uppercase text-transform: uppercase
} }
.data_error .reload, .error .reload, .forbidden .reload, .passwd .reload {
color: #a9b1b3;
font-size: 12px;
text-decoration: none;
border: 1px solid #a9b1b3;
background-color: transparent;
padding: 6px 12px;
border-radius: 40px
}
.data_error .no-release-tips, .error .no-release-tips, .forbidden .no-release-tips, .passwd .no-release-tips {
line-height: 20px;
max-width: 80%;
margin: 0 auto
}
.data_error .no-release-tips a, .error .no-release-tips a, .forbidden .no-release-tips a, .passwd .no-release-tips a { .data_error .no-release-tips a, .error .no-release-tips a, .forbidden .no-release-tips a, .passwd .no-release-tips a {
text-decoration: underline; text-decoration: underline;
color: #9b9b9b color: #9b9b9b
} }
#passwd-wrong {
display: none
}
.main .icon-container { .main .icon-container {
position: relative; position: relative;
@ -1124,11 +1016,6 @@
line-height: 1.6 line-height: 1.6
} }
.main > header .release-type {
margin: 24px auto 0;
width: 290px;
text-align: left
}
.main > header .scan-tips { .main > header .scan-tips {
margin: 0 auto; margin: 0 auto;
@ -1223,20 +1110,12 @@
} }
} }
.master-section {
overflow: hidden;
padding: 40px 0
}
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
.main > header { .main > header {
min-height: 400px min-height: 400px
} }
.main > header .release-type {
display: none
}
.main > header .release-info { .main > header .release-info {
display: block display: block
} }
@ -1264,36 +1143,10 @@
.main > header .scan-tips { .main > header .scan-tips {
display: none display: none
} }
.master-section {
text-align: center
}
.master-section .store-link {
display: inline-block;
float: none;
margin-bottom: 0
}
.master-section p {
display: none
}
} }
.master-section p {
margin: 0;
line-height: 21px
}
.master-section pre {
text-align: left;
white-space: pre-line;
word-wrap: break-word;
word-break: break-all;
line-height: 22px
}
.footer, .per-type-info .info, .releases-section .release-view .qrcode, .section-store-link, .store-section { .footer, .per-type-info .info {
text-align: center text-align: center
} }
@ -1317,17 +1170,6 @@
font-weight: 400 font-weight: 400
} }
.store-section .store-link {
display: block;
margin: 0 auto;
padding: 14px 40px 10px;
width: 260px;
border: 1px solid #505556;
border-radius: 5px;
background-color: transparent;
color: #505556;
font-size: 28px
}
.per-type-info { .per-type-info {
position: relative; position: relative;
@ -1341,23 +1183,6 @@
width: 50% width: 50%
} }
.per-type-info .type:first-child .releases-section {
padding: 70px 70px 0 0
}
.per-type-info .type .master-section {
padding: 70px 0 0;
border-top: 0
}
.per-type-info .type .master-section pre {
white-space: pre-line
}
.per-type-info .type:last-child .master-section, .per-type-info .type:last-child .releases-section {
padding: 70px 0 0 70px
}
.per-type-info .type-icon { .per-type-info .type-icon {
margin-bottom: 0 margin-bottom: 0
} }
@ -1444,107 +1269,6 @@
max-height: 462px max-height: 462px
} }
.type:first-child .master-section {
padding-right: 5px
}
.type:last-child .master-section {
padding-left: 5px
}
.hide {
display: none
}
.wechat-tips img, .wechat-tips span {
display: inline-block;
margin-right: 10px;
vertical-align: middle
}
.wechat-tips {
position: fixed;
top: 10px;
z-index: 103;
padding-top: 14px;
width: 100%;
text-align: right
}
.wechat-tips span {
color: #fff;
text-align: left;
font-weight: 700;
font-size: 16px;
line-height: 30px
}
.wechat-tips span.en {
width: 240px
}
.wechat-tips img {
margin-bottom: 13px;
width: 50px
}
@media (min-width: 420px) {
.wechat-tips span {
margin-right: 15px
}
.wechat-tips span.en {
margin-bottom: -20px;
width: auto
}
.wechat-tips img {
margin-right: 20px
}
}
.list-unstyled {
margin: 0;
padding: 0;
list-style-type: none
}
.list-unstyled li:first-child {
padding-bottom: 10px
}
.tip {
margin-left: 15px;
vertical-align: middle;
font-size: 14px;
cursor: pointer
}
.tip.en {
margin-left: 5px
}
.tip img {
margin-right: 5px;
height: 16px;
position: relative;
top: 4px
}
.tip.RISK {
color: #d95656
}
.tip.SCANED {
color: #8fbf46
}
.tip.SCANED img {
height: 14px;
top: 2px
}
@-webkit-keyframes rotate { @-webkit-keyframes rotate {
0% { 0% {
@ -1637,139 +1361,12 @@
vertical-align: bottom vertical-align: bottom
} }
.main header .app-brief .name > .tip {
vertical-align: bottom;
position: relative;
top: -3px
}
.main.forbidden .footer .one-key-report, .main.not_found .footer .one-key-report {
display: none
}
.app_bottom_fixed img { .app_bottom_fixed img {
width: 100%; width: 100%;
max-height: 80px max-height: 80px
} }
@media only screen and (max-width: 991px) and (min-width: 768px) {
.after-install-games-fixed .popularize-games .popularize-list > li:nth-child(n+5) {
display: none
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game {
margin-bottom: 30px !important
}
}
@media only screen and (max-width: 1024px) and (min-width: 991px) {
.after-install-games-fixed .popularize-games .popularize-list > li:nth-child(n+6) {
display: none
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game {
margin-bottom: 30px !important
}
}
.after-install-games-fixed .popularize-games .popularize-list {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-pack: distribute;
justify-content: space-around
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game {
max-width: 180px;
width: 45%;
box-shadow: 0 6px 20px 0 rgba(0, 0, 0, .1);
margin-bottom: 10px;
border-radius: 20px;
background: #35a89b
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game .app-download {
font-size: 16px;
height: 30px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
color: #fff
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game .popularize-app-game-content {
height: 145px;
background: #fff;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border-radius: 20px
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game .popularize-app-game-content .app-zhibo-icon-img {
margin-top: 10px
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game .popularize-app-game-content .app-zhibo-icon-img > img {
border-radius: 5px;
height: 50px;
width: 50px
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game .primary-text {
max-width: 80%;
color: #4a4a4a;
text-align: center;
font-size: 16px;
font-weight: 700
}
.after-install-games-fixed .popularize-games .popularize-list .popularize-app-game .secondary-text {
max-width: 80%;
height: 32px;
overflow: hidden;
text-align: center;
font-size: 12px;
color: rgba(93, 103, 109, .9);
padding-bottom: 5px
}
@media screen and (max-height: 500px) {
.bottom-popularize {
position: static
}
}
.visiable-moblie {
display: none
}
@media screen and (max-width: 720px) {
.main .ad-section {
width: 100%
}
}
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
.combo .main, .main { .combo .main, .main {
width: 100%; width: 100%;
@ -1848,7 +1445,7 @@
background-color: #000; background-color: #000;
width: 100%; width: 100%;
height: 100%; height: 100%;
top: 0px; top: 0;
position: fixed; position: fixed;
opacity: 0.3; opacity: 0.3;
-webkit-opacity: 0.3; -webkit-opacity: 0.3;

@ -1,20 +1,17 @@
<template> <template>
<div> <div>
<el-container class="navbar-wrapper"> <el-container>
<el-main align="center"> <el-main>
<div style="width: 300px; margin: 0 auto; padding: 5px 0;"> <div style="width: 300px; margin: 0 auto; padding: 5px 0;">
<el-link :underline="false"> {{ footer.copyright }}</el-link> <el-link :underline="false"> {{ footer.copyright }}</el-link>
</div> </div>
<div style="width: 300px; margin: 0 auto; padding: 5px 0;"> <div style="width: 300px; margin: 0 auto; padding: 5px 0;">
<a style="display: inline-block; text-decoration: none; height: 20px; line-height: 20px;" <a style="display: inline-block; text-decoration: none; height: 20px; line-height: 20px;"
:href="footer.gongAnBeiAn.url" :href="footer.gongAnBeiAn.url"
target="_blank" rel="noopener"> target="_blank" rel="noopener">
<img style="float: left;" src="@/assets/beianlogo.png"/> <img style="float: left;" src="@/assets/beianlogo.png" alt=""/>
<el-link :underline="false" <el-link :underline="false"
style="float: left; height: 20px; line-height: 20px; margin: 0px 0px 0px 5px; color: #939393;"> style="float: left; height: 20px; line-height: 20px; margin: 0 0 0 5px; color: #939393;">
{{ footer.gongAnBeiAn.text }} {{ footer.gongAnBeiAn.text }}
</el-link> </el-link>
</a> </a>
@ -61,17 +58,12 @@
</script> </script>
<style scoped> <style scoped>
.el-container { .el-container {
margin: 10px auto 100px; margin: 10px auto 100px;
width: 1166px; width: 1166px;
} text-align: center;
.navbar-wrapper {
font-size: 0; font-size: 0;
border-radius: 10px; border-radius: 10px;
} }
</style> </style>

@ -1,7 +1,6 @@
<template> <template>
<div> <div style="background-color: rgba(162,193,230,0.18);">
<el-container class="navbar-wrapper"> <el-container class="navbar-wrapper">
<el-dialog <el-dialog
title="API Token" title="API Token"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
@ -16,12 +15,9 @@
<el-button type="primary" @click="maketoken">重新生成</el-button> <el-button type="primary" @click="maketoken">重新生成</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="14" style="padding-top: 16px;margin-left: 60px"> <el-col :span="14" style="padding-top: 36px;margin-left: 60px">
<el-breadcrumb separator-class="el-icon-arrow-right" style="height: 60px;font-size: 20px">
<el-breadcrumb separator-class="el-icon-arrow-right" style="height: 80px;font-size: 20px">
<el-breadcrumb-item :to="{ name:'FirIndex' }">首页</el-breadcrumb-item> <el-breadcrumb-item :to="{ name:'FirIndex' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name:'FirApps'}">我的应用</el-breadcrumb-item> <el-breadcrumb-item :to="{ name:'FirApps'}">我的应用</el-breadcrumb-item>
@ -35,14 +31,13 @@
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</el-col> </el-col>
<el-col :span="2" :push="3"> <el-col :span="2" :push="3" style="padding-top: 16px;">
<div class="block"> <div class="block">
<el-avatar :size="66" :src="$store.state.userinfo.head_img"></el-avatar> <el-avatar :size="66" :src="$store.state.userinfo.head_img"></el-avatar>
</div> </div>
</el-col> </el-col>
<el-col :span="4" :push="3"> <el-col :span="4" :push="3" style="padding-top: 16px;">
<el-dropdown style="padding-top: 12px;" @command="handleCommand"> <el-dropdown style="padding-top: 12px;" @command="handleCommand">
<el-button type="success" plain round> <el-button type="success" plain round>
{{$store.state.userinfo.first_name }}<i class="el-icon-arrow-down el-icon--right"></i> {{$store.state.userinfo.first_name }}<i class="el-icon-arrow-down el-icon--right"></i>
@ -66,7 +61,6 @@
</el-container> </el-container>
</div> </div>
</template> </template>
@ -159,16 +153,10 @@
.el-container, .el-row { .el-container, .el-row {
margin: 10px auto; margin: 10px auto;
width: 1166px; width: 1266px;
}
.el-container {
margin: 10px auto 100px;
width: 1166px;
} }
.navbar-wrapper { .navbar-wrapper {
background-color: #dbffeb;
font-size: 0; font-size: 0;
border-radius: 10px; border-radius: 10px;
} }
@ -185,9 +173,5 @@
font-size: 12px; font-size: 12px;
} }
.elbi {
color: #67c23a;
}
</style> </style>

@ -1,8 +1,8 @@
<template> <template>
<el-container> <el-container>
<div style="margin: 10px 0 10px 0 ;position:absolute;right:20px;top:auto;"> <div style="margin: 10px 0 10px 0 ;position:absolute;right:20px;top:auto;">
<el-button round icon="el-icon-arrow-left" @click="$router.go(-1)"></el-button> <el-button round icon="el-icon-arrow-left" @click="$router.go(-1)"/>
<el-button round icon="el-icon-s-home" @click="$router.push({name:'FirIndex'})"></el-button> <el-button round icon="el-icon-s-home" @click="$router.push({name:'FirIndex'})"/>
</div> </div>
<el-header> <el-header>
@ -20,13 +20,13 @@
<el-tab-pane label="用户名登录" name="username" v-if="allow_ways.up"> <el-tab-pane label="用户名登录" name="username" v-if="allow_ways.up">
<el-form-item> <el-form-item>
<el-input v-model="form.email" prefix-icon="el-icon-user" placeholder="用户名" autofocus <el-input v-model="form.email" prefix-icon="el-icon-user" placeholder="用户名" autofocus
clearable></el-input> clearable/>
</el-form-item> </el-form-item>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="rutitle+'登录'" name="smsemail" v-if="allow_ways.sms || allow_ways.email"> <el-tab-pane :label="rutitle+'登录'" name="smsemail" v-if="allow_ways.sms || allow_ways.email">
<el-form-item> <el-form-item>
<el-input v-model="form.email" prefix-icon="el-icon-user" :placeholder="rutitle" autofocus <el-input v-model="form.email" prefix-icon="el-icon-user" :placeholder="rutitle" autofocus
clearable></el-input> clearable/>
</el-form-item> </el-form-item>
</el-tab-pane> </el-tab-pane>
@ -35,21 +35,21 @@
<el-form-item v-if="is_cptch"> <el-form-item v-if="is_cptch">
<el-input v-model="form.password" prefix-icon="el-icon-lock" placeholder="密码" <el-input v-model="form.password" prefix-icon="el-icon-lock" placeholder="密码"
@keyup.enter.native="onSubmit" @keyup.enter.native="onSubmit"
show-password></el-input> show-password/>
</el-form-item> </el-form-item>
<el-form-item v-else> <el-form-item v-else>
<el-input v-model="form.password" prefix-icon="el-icon-lock" placeholder="密码" <el-input v-model="form.password" prefix-icon="el-icon-lock" placeholder="密码"
show-password></el-input> show-password/>
</el-form-item> </el-form-item>
<el-form-item style="height: 40px" v-if="cptch.cptch_image"> <el-form-item style="height: 40px" v-if="cptch.cptch_image">
<el-row style="height: 40px"> <el-row style="height: 40px">
<el-col :span="16"> <el-col :span="16">
<el-input placeholder="请输入验证码" v-model="form.authcode" maxlength="6" <el-input placeholder="请输入验证码" v-model="form.authcode" maxlength="6"
@keyup.enter.native="onSubmit"></el-input> @keyup.enter.native="onSubmit"/>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-image <el-image
style="margin:0px 4px;border-radius:4px;cursor:pointer;height: 40px" style="margin:0 4px;border-radius:4px;cursor:pointer;height: 40px"
:src="cptch.cptch_image" :src="cptch.cptch_image"
fit="contain" @click="get_auth_code"> fit="contain" @click="get_auth_code">
</el-image> </el-image>
@ -260,11 +260,11 @@
.el-container { .el-container {
margin: 10px auto; margin: 10px auto;
width: 1166px; width: 1266px;
} }
.el-header { .el-header {
margin-top: 16%; margin-top: 13%;
} }
.el-form { .el-form {

@ -1,8 +1,8 @@
<template> <template>
<el-container> <el-container>
<div style="margin: 10px 0 10px 0 ;position:absolute;right:20px;top:auto;"> <div style="margin: 10px 0 10px 0 ;position:absolute;right:20px;top:auto;">
<el-button round icon="el-icon-arrow-left" @click="$router.go(-1)"></el-button> <el-button round icon="el-icon-arrow-left" @click="$router.go(-1)"/>
<el-button round icon="el-icon-s-home" @click="$router.push({name:'FirIndex'})"></el-button> <el-button round icon="el-icon-s-home" @click="$router.push({name:'FirIndex'})"/>
</div> </div>
<el-header> <el-header>
@ -18,22 +18,22 @@
<el-form-item v-if="allow_ways.code"> <el-form-item v-if="allow_ways.code">
<el-input v-model="form.icode" prefix-icon="el-icon-postcard" placeholder="邀请码必填" clearable <el-input v-model="form.icode" prefix-icon="el-icon-postcard" placeholder="邀请码必填" clearable
></el-input> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input v-model="form.email" prefix-icon="el-icon-user" :placeholder="rutitle" autofocus <el-input v-model="form.email" prefix-icon="el-icon-user" :placeholder="rutitle" autofocus
clearable></el-input> clearable/>
</el-form-item> </el-form-item>
<el-form-item style="height: 40px" v-if="cptch.cptch_image"> <el-form-item style="height: 40px" v-if="cptch.cptch_image">
<el-row style="height: 40px"> <el-row style="height: 40px">
<el-col :span="16"> <el-col :span="16">
<el-input placeholder="请输入图片验证码" v-model="form.authcode" maxlength="6"></el-input> <el-input placeholder="请输入图片验证码" v-model="form.authcode" maxlength="6"/>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-image <el-image
style="margin:0px 4px;border-radius:4px;cursor:pointer;height: 40px" style="margin:0 4px;border-radius:4px;cursor:pointer;height: 40px"
:src="cptch.cptch_image" :src="cptch.cptch_image"
fit="contain" @click="get_auth_code"> fit="contain" @click="get_auth_code">
</el-image> </el-image>
@ -50,7 +50,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-button type="info" @click="getphonecode" plain <el-button type="info" @click="getphonecode" plain
style="margin:0px 4px;border-radius:4px;cursor:pointer;height: 40px">获取验证码 style="margin:0 4px;border-radius:4px;cursor:pointer;height: 40px">获取验证码
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -59,11 +59,11 @@
<el-form-item> <el-form-item>
<el-input v-model="form.password" prefix-icon="el-icon-lock" placeholder="密码" <el-input v-model="form.password" prefix-icon="el-icon-lock" placeholder="密码"
show-password></el-input> show-password/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input v-model="form.password2" prefix-icon="el-icon-lock" placeholder="确认密码" <el-input v-model="form.password2" prefix-icon="el-icon-lock" placeholder="确认密码"
show-password @keyup.enter.native="onRegist"></el-input> show-password @keyup.enter.native="onRegist"/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -337,12 +337,12 @@
.el-container { .el-container {
margin: 10px auto; margin: 10px auto;
width: 1166px; width: 1266px;
} }
.el-header { .el-header {
margin-top: 16%; margin-top: 13%;
} }
.el-form { .el-form {

@ -11,7 +11,7 @@
<div class="list-wrapper" style="width: 300px;"> <div class="list-wrapper" style="width: 300px;">
<ul> <ul>
<li v-for="sign in signhelplist" :key="sign.url"> <li v-for="sign in signhelplist" :key="sign.url">
<img v-lazy="sign.url" :key="sign.url"/> <img v-lazy="sign.url" :key="sign.url" alt=""/>
<p> <p>
安装引导<br>{{ sign.msg}} 安装引导<br>{{ sign.msg}}
</p> </p>
@ -26,10 +26,10 @@
<div class="wechat_tip_content" v-if="agent === 'wxandroid' || agent === 'wxapple'"> <div class="wechat_tip_content" v-if="agent === 'wxandroid' || agent === 'wxapple'">
<div class="wechat_tip" v-show="agent === 'wxandroid'"> <div class="wechat_tip" v-show="agent === 'wxandroid'">
<i class="triangle-up"></i>请点击右上角<br>选择"在浏览器打开" <i class="triangle-up"/>请点击右上角<br>选择"在浏览器打开"
</div> </div>
<div class="wechat_tip" v-show="agent === 'wxapple'"> <div class="wechat_tip" v-show="agent === 'wxapple'">
<i class="triangle-up"></i>请点击右上角<br>选择"在Safari中打开" <i class="triangle-up"/>请点击右上角<br>选择"在Safari中打开"
</div> </div>
</div> </div>
@ -46,7 +46,7 @@
<div class="cell-container"> <div class="cell-container">
<div class="app-brief"> <div class="app-brief">
<div class="icon-container wrapper"> <div class="icon-container wrapper">
<i class="i bg-path"></i> <i class="i bg-path"/>
<span class="icon"><img <span class="icon"><img
:src="mcurrentappinfo.icon_url"></span> :src="mcurrentappinfo.icon_url"></span>
<span id="qrcode" class="qrcode"> <span id="qrcode" class="qrcode">
@ -56,7 +56,7 @@
<p v-else class="scan-tips wrapper icon-warp">{{ mcurrentappinfo.release_type|getiOStype <p v-else class="scan-tips wrapper icon-warp">{{ mcurrentappinfo.release_type|getiOStype
}}</p> }}</p>
<h1 class="name wrapper"> <h1 class="name wrapper">
<span class="icon-warp" style="margin-left:0px"> <span class="icon-warp" style="margin-left:0">
<i v-if="currentappinfo.type === 0 && agent !== ''" <i v-if="currentappinfo.type === 0 && agent !== ''"
class="iconfont icon-android2"/> class="iconfont icon-android2"/>
<i v-if="currentappinfo.type === 1 && agent !== ''" <i v-if="currentappinfo.type === 1 && agent !== ''"
@ -86,7 +86,7 @@
<div id="actions" class="actions" v-if="agent !==''" <div id="actions" class="actions" v-if="agent !==''"
style="margin-top: 20%;margin-bottom: 20%"> style="margin-top: 20%;margin-bottom: 20%">
<button type="info" round v-if="agent === 'wxandroid' || agent === 'wxapple'"> <button v-if="agent === 'wxandroid' || agent === 'wxapple'">
不支持在微信内下载 不支持在微信内下载
</button> </button>
@ -103,7 +103,7 @@
<div><p>正在安装请按 Home 键在桌面查看</p> <div><p>正在安装请按 Home 键在桌面查看</p>
<p v-if="!this.currentappinfo.issupersign && this.mcurrentappinfo.release_type!==1"> <p v-if="!this.currentappinfo.issupersign && this.mcurrentappinfo.release_type!==1">
<button @click="gomobileaction"> <button @click="gomobileaction">
<a icon="el-icon-loadings" type="primary" <a type="primary"
:underline="false"> :underline="false">
安装完成后,需立即信任 安装完成后,需立即信任
</a> </a>
@ -121,7 +121,7 @@
</div> </div>
<br/> <br/>
<button @click="download"> <button @click="download">
<a icon="el-icon-loadings" type="primary" :underline="false"> 下载安装 </a> <a :underline="false"> 下载安装 </a>
</button> </button>
<a v-if="(currentappinfo.issupersign || mcurrentappinfo.release_type === 2) && !$route.query.udid" <a v-if="(currentappinfo.issupersign || mcurrentappinfo.release_type === 2) && !$route.query.udid"
@click="jiaocheng('open')" @click="jiaocheng('open')"
@ -211,7 +211,7 @@
<div class="list-wrapper"> <div class="list-wrapper">
<ul> <ul>
<li v-for="screen in imagelist" :key="screen"> <li v-for="screen in imagelist" :key="screen">
<img v-lazy="screen"/> <img v-lazy="screen" alt=""/>
</li> </li>
</ul> </ul>
</div> </div>

@ -87,7 +87,7 @@
</el-slider> </el-slider>
</div> </div>
<el-container style="padding-top: 20px;max-width: 96%"> <el-container style="padding-top: 20px;max-width: 96%">
<router-view></router-view> <router-view/>
</el-container> </el-container>
</div> </div>
</div> </div>
@ -248,10 +248,8 @@
<style scoped> <style scoped>
.el-main { .el-main {
margin: 10px auto 100px; margin: 10px auto 100px;
width: 1166px;
position: relative; position: relative;
padding-bottom: 1px; padding-bottom: 1px;
background-color: #bfe7f9;
color: #9b9b9b; color: #9b9b9b;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border-radius: 1%; border-radius: 1%;
@ -264,14 +262,16 @@
} }
.page-app { .page-app {
padding-bottom: 0 padding-bottom: 0;
width: 1266px;
margin: 10px auto 100px;
} }
.page-app .banner { .page-app .banner {
padding-top: 60px; padding-top: 60px;
padding-bottom: 40px; padding-bottom: 40px;
border-bottom: 1px solid rgba(208, 208, 208, .5); border-bottom: 1px solid rgba(208, 208, 208, .5);
background-color: #d5f9f9; background-color: #ffffff;
border-radius: 10px; border-radius: 10px;
} }
@ -281,7 +281,7 @@
top: 0; top: 0;
} }
.page-app .banner .actions .download, .page-app .banner .actions .upload { .page-app .banner .actions .download {
display: block; display: block;
min-width: 150px; min-width: 150px;
padding: 10px 20px; padding: 10px 20px;
@ -291,13 +291,6 @@
} }
.page-app .banner .actions .upload {
background-color: #3ab2a7;
border: 1px solid transparent;
color: #fff;
cursor: pointer
}
.page-app .banner .actions .download { .page-app .banner .actions .download {
text-align: center; text-align: center;
text-decoration: none; text-decoration: none;

@ -1,14 +1,10 @@
<template> <template>
<div style="margin-top: 20px;width: 100%;margin-left: 8%"> <div style="margin-top: 20px;width: 100%;margin-left: 8%">
<el-form ref="form" label-width="80px"> <el-form ref="form" label-width="80px">
<el-form-item label="应用ID" style="width: 55%"> <el-form-item label="应用ID" style="width: 56%">
<el-row> <el-row>
<el-col :span="19"> <el-col :span="19">
<el-input v-model="currentapp.app_id" :disabled="true"></el-input> <el-input v-model="currentapp.app_id" :disabled="true"></el-input>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-button type="danger" plain @click="delApp" <el-button type="danger" plain @click="delApp"
@ -40,30 +36,38 @@
class="avatar"> class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i> <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="应用描述" style="width: 66%"> <el-form-item label="应用描述" style="width: 66%">
<el-input type="textarea" v-model="currentapp.description" <el-input type="textarea" v-model="currentapp.description"
:autosize="{ minRows: 6, maxRows: 18}"></el-input> :autosize="{ minRows: 8, maxRows: 18}"></el-input>
</el-form-item>
<el-form-item>
<el-row>
<el-col :span="15">
<el-button type="primary" plain @click="saveappinfo('save')" size="medium"
style="width: 160px;height: 50px;font-size: large;float: right">保存信息
</el-button>
</el-col>
</el-row>
</el-form-item> </el-form-item>
<el-divider></el-divider> <el-divider></el-divider>
<el-form-item label="应用截图" style="width: 100%"> <el-form-item label="应用截图" style="width: 100%">
<div class="appdownload"> <div class="appdownload">
<el-tooltip content="点击删除该应用截图" v-for="(screen) in currentapp.screenshots" :key="screen.id"
placement="top" effect="light">
<el-image <el-image
style="width: 155px;height: 288px;margin-right: 20px;background-color: #d1eef9;float: left" class="screen-img"
fit="scale-down" fit="scale-down"
@click="delscreen(screen.id)" @click="delscreen(screen.id)"
v-for="(screen) in currentapp.screenshots" :key="screen.id" :src="screen.url" alt=""> :src="screen.url" alt="">
<div slot="error" class="image-slot" @click="delscreen(screen.id)" <div slot="error" class="image-slot" @click="delscreen(screen.id)"
style="text-align: center;margin-top: 80%"> style="text-align: center;margin-top: 80%">
<i class="el-icon-picture-outline"> 加载失败</i> <i class="el-icon-picture-outline"> 加载失败</i>
</div> </div>
</el-image> </el-image>
<div style="width: 155px;height: 288px;background-color: #d1eef9;float: left" </el-tooltip>
<div class="screen-img"
v-if="currentapp.screenshots && currentapp.screenshots.length < 5"> v-if="currentapp.screenshots && currentapp.screenshots.length < 5">
<el-upload <el-upload
drag drag
@ -77,10 +81,6 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item>
<el-button type="primary" @click="saveappinfo('save')">保存</el-button>
</el-form-item>
</el-form> </el-form>
</div> </div>
@ -140,7 +140,6 @@
this.$confirm('确认删除 ' + this.currentapp.name + ' ?') this.$confirm('确认删除 ' + this.currentapp.name + ' ?')
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
.then(res => { .then(res => {
this.willDeleteApp = false;
apputils(data => { apputils(data => {
if (data.code === 1000) { if (data.code === 1000) {
this.$message({ this.$message({
@ -160,9 +159,8 @@
}); });
}) })
// eslint-disable-next-line no-unused-vars
.catch(err => { .catch(err => {
this.willDeleteApp = false; this.$message.error(err)
}); });
}, },
getappinfo() { getappinfo() {
@ -240,7 +238,7 @@
<style scoped> <style scoped>
.appdownload /deep/ .el-upload-dragger { .appdownload /deep/ .el-upload-dragger {
background: #d1eef9; background: #f1f1f1;
width: 155px; width: 155px;
height: 288px; height: 288px;
} }
@ -258,8 +256,16 @@
} }
.avatar-uploader .el-image:hover { .screen-img {
border-color: #409EFF; width: 155px;
height: 288px;
margin-right: 20px;
background-color: #f1f1f1;
float: left
}
.screen-img:hover {
background-color: #c2dcf1;
} }
.avatar-uploader-icon { .avatar-uploader-icon {

@ -6,19 +6,19 @@
<table> <table>
<tr> <tr>
<td><span class="type">{{ currentapp.type|getapptype}}</span></td> <td><span class="type">{{ currentapp.type|getapptype}}</span></td>
<td></td> <td/>
<td><span class="type">{{ has_combo.type|getapptype}}</span></td> <td><span class="type">{{ has_combo.type|getapptype}}</span></td>
</tr> </tr>
<tr> <tr>
<td> <td>
<div class="icon"><img v-if="cmaster_release" :src="cmaster_release.icon_url" <div class="icon"><img v-if="cmaster_release" :src="cmaster_release.icon_url"
class="ng-isolate-scope"> class="ng-isolate-scope" alt="">
</div> </div>
</td> </td>
<td><i class="icon-combo"></i></td> <td><i class="icon-combo"/></td>
<td> <td>
<div class="icon"><img v-if="hmaster_release" :src="hmaster_release.icon_url" <div class="icon"><img v-if="hmaster_release" :src="hmaster_release.icon_url"
class="ng-isolate-scope"> class="ng-isolate-scope" alt="">
</div> </div>
</td> </td>
</tr> </tr>
@ -39,34 +39,30 @@
<b>选择已有的应用进行合并</b> <b>选择已有的应用进行合并</b>
</p> </p>
<div class="apps"> <div class="apps">
<b v-if="comboapplists.length ===0 ">暂无可以合并的应用</b> <el-link v-if="comboapplists.length ===0 " :underline="false" type="danger">暂无可以合并的应用
</el-link>
<div :key="comboapp.app_id" @click="each_add(comboapp.app_id)" class="app ng-scope" <div :key="comboapp.app_id" @click="each_add(comboapp.app_id)" class="app ng-scope"
v-for="comboapp in comboapplists"> v-for="comboapp in comboapplists">
<div class="icon"> <div class="icon">
<img :src="comboapp.master_release|geticon_url" class="ng-isolate-scope"> <img :src="comboapp.master_release|geticon_url" class="ng-isolate-scope" alt="">
</div> </div>
<p class="ng-binding">{{ comboapp.name }}</p></div> <p class="ng-binding">{{ comboapp.name }}</p></div>
</div> </div>
</div> </div>
<span class="hr-vertical"/>
<span class="hr-vertical"></span>
<div class="find-apps"> <div class="find-apps">
<p class="lead "> <p class="lead ">
<b>输入需要合并的应用的短链接或者名字</b> <b>输入需要合并的应用的短链接或者名字</b>
</p> </p>
<div class="form-group"> <div class="form-group">
<el-input <el-input
@click="searchapps" @click="searchapps"
clearables clearable
placeholder="输入短链接或者名字" placeholder="输入短链接或者名字"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
v-model="searchKey" v-model="searchKey"
/> />
</div> </div>
</div> </div>
</div> </div>
@ -366,37 +362,9 @@
padding-top: 40px padding-top: 40px
} }
.apps-app-combo .request-wrapper table .actions .btn {
margin-bottom: 20px;
min-width: 100px;
border-radius: 30px
}
.apps-app-combo .request-wrapper table .actions .btn-link {
color: #a9b1b3;
text-decoration: none;
border: 1px solid transparent;
-webkit-transition: border-color .25s;
transition: border-color .25s
}
.apps-app-combo .request-wrapper table .actions .btn-link:hover {
border-color: #a9b1b3
}
.apps-app-combo .request-wrapper table i.icon-combo { .apps-app-combo .request-wrapper table i.icon-combo {
font-size: 30px font-size: 30px
} }
.apps-app-combo .combo-loading-wrap {
margin-bottom: 8px
}
.apps-app-combo .combo-loading-wrap > .icon {
display: inline-block;
-webkit-animation: rotating 1s linear infinite;
animation: rotating 1s linear infinite
}
</style> </style>

@ -1,6 +1,4 @@
<template> <template>
<div style="margin-top: 20px;width: 90%;margin-left: 8%"> <div style="margin-top: 20px;width: 90%;margin-left: 8%">
<el-link type="primary" v-if="this.currentapp.issupersign" style="margin-bottom: 30px;font-size: x-large" <el-link type="primary" v-if="this.currentapp.issupersign" style="margin-bottom: 30px;font-size: x-large"
@click="$router.push({name:'FirSuperSignBase',params:{act:'useddevices'},query:{bundleid: currentapp.bundle_id}})"> @click="$router.push({name:'FirSuperSignBase',params:{act:'useddevices'},query:{bundleid: currentapp.bundle_id}})">
@ -60,33 +58,4 @@
<style scoped> <style scoped>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
height: 100px;
width: 100px;
border-radius: 10px;
display: block;
}
</style> </style>

@ -341,33 +341,4 @@
<style scoped> <style scoped>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
height: 100px;
width: 100px;
border-radius: 10px;
display: block;
}
</style> </style>

@ -32,7 +32,7 @@
<el-tooltip content="本应用签名使用额度,超过该额度,新设备将无法安装本应用。0代表不限额" placement="top"> <el-tooltip content="本应用签名使用额度,超过该额度,新设备将无法安装本应用。0代表不限额" placement="top">
<el-input-number v-model="currentapp.supersign_limit_number" :disabled="supersign_disable" <el-input-number v-model="currentapp.supersign_limit_number" :disabled="supersign_disable"
:placeholder="defualt_dtitle" :min="0" :placeholder="defualt_dtitle" :min="0"
style="width: 40%;margin-right: 10px" label="签名限额"></el-input-number> style="width: 40%;margin-right: 10px" label="签名限额"/>
</el-tooltip> </el-tooltip>
<el-button @click="saveappinfo({supersign_limit_number:currentapp.supersign_limit_number})" <el-button @click="saveappinfo({supersign_limit_number:currentapp.supersign_limit_number})"
@ -54,7 +54,7 @@
<el-select v-model="currentapp.supersign_type" placeholder="特殊签名权限" <el-select v-model="currentapp.supersign_type" placeholder="特殊签名权限"
style="width: 60%;margin-right: 10px" :disabled="supersign_disable"> style="width: 60%;margin-right: 10px" :disabled="supersign_disable">
<el-option v-for="st in sign_type_list" :key="st.id" :label="st.name" <el-option v-for="st in sign_type_list" :key="st.id" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
<el-button @click="saveappinfo({supersign_type:currentapp.supersign_type})" <el-button @click="saveappinfo({supersign_type:currentapp.supersign_type})"
:disabled="supersign_disable" :disabled="supersign_disable"
@ -203,33 +203,4 @@
<style scoped> <style scoped>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
height: 100px;
width: 100px;
border-radius: 10px;
display: block;
}
</style> </style>

@ -9,21 +9,21 @@
<el-card> <el-card>
<div class="directive-view-release"> <div class="directive-view-release">
<i class="el-icon-cloudy" v-if="! app.is_master"></i> <i class="el-icon-cloudy" v-if="! app.is_master"/>
<i class="el-icon-cloudy" style="background-color: rgb(96, 200, 279)" v-else></i> <i class="el-icon-cloudy" style="background-color: rgb(139,195,248)" v-else/>
<b class="ng-binding">{{app.app_version}} (Build {{app.build_version}})</b> <b class="ng-binding">{{app.app_version}} (Build {{app.build_version}})</b>
<div class="release-metainfo ng-hide" <div class="release-metainfo ng-hide"
v-if="app.release_type === 0"> v-if="app.release_type === 0">
<small> <small>
<i class="icon-calendar"></i> <i class="icon-calendar"/>
<span class="el-icon-date">&nbsp;{{app.created_time|formattimeline}}</span> <span class="el-icon-date">&nbsp;{{app.created_time|formattimeline}}</span>
</small> </small>
</div> </div>
<div class="release-metainfo" v-else> <div class="release-metainfo" v-else>
<small> <small>
<i class="icon-calendar"></i> <i class="icon-calendar"/>
<span class="el-icon-date">&nbsp;{{app.created_time|formattimeline}}</span> <span class="el-icon-date">&nbsp;{{app.created_time|formattimeline}}</span>
</small> &nbsp;&nbsp;·&nbsp;&nbsp; </small> &nbsp;&nbsp;·&nbsp;&nbsp;
@ -32,19 +32,18 @@
</div> </div>
<p>{{app.changelog}}</p> <p>{{app.changelog}}</p>
<label>
<textarea v-if="app.editing.changelog" <textarea v-if="app.editing.changelog"
v-model="app.changelog" v-model="app.changelog"
placeholder="更新日志"> placeholder="更新日志">
</textarea> </textarea>
</label>
<div class="release-actions editing " v-if="app.editing.changelog"> <div class="release-actions editing " v-if="app.editing.changelog">
<button class="btn-cancel" @click="endEdit(app,'changelog')"><span <button class="btn-cancel" @click="endEdit(app,'changelog')"><span
>取消</span></button> >取消</span></button>
<button class="btn-save" @click="updateChangelog(app,'changelog')"><span <button class="btn-save" @click="updateChangelog(app,'changelog')"><span
>保存</span></button> >保存</span></button>
</div> </div>
<el-input v-if="app.editing.binary_url" <el-input v-if="app.editing.binary_url"
v-model="app.binary_url" v-model="app.binary_url"
placeholder="下载地址,默认本服务器,填写第三方可以 自动跳转到第三方平台" clearable> placeholder="下载地址,默认本服务器,填写第三方可以 自动跳转到第三方平台" clearable>
@ -56,52 +55,42 @@
<button class="btn-save" @click="updateChangelog(app,'binary_url')"><span <button class="btn-save" @click="updateChangelog(app,'binary_url')"><span
>保存</span></button> >保存</span></button>
</div> </div>
<div class="release-actions" v-show="!app.editing.changelog && !app.editing.binary_url "> <div class="release-actions" v-show="!app.editing.changelog && !app.editing.binary_url ">
<el-tooltip class="tooltip-top" content="编辑更新日志" placement="top"> <el-tooltip class="tooltip-top" content="编辑更新日志" placement="top">
<el-button @click="startEdit(app,'changelog')" <el-button @click="startEdit(app,'changelog')"
tooltip="编辑更新日志" tooltip="编辑更新日志"
class="tooltip-top "> class="tooltip-top ">
<i class="el-icon-edit"></i> <i class="el-icon-edit"/>
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<el-tooltip class="tooltip-top" content="下载原文件" placement="top"> <el-tooltip class="tooltip-top" content="下载原文件" placement="top">
<el-button class="tooltip-top" tooltip="下载原文件" <el-button class="tooltip-top" tooltip="下载原文件"
@click="downloadPackage(app)"> @click="downloadPackage(app)">
<i class="el-icon-download"></i> <i class="el-icon-download"/>
<span>{{app.binary_size}}</span> <span>{{app.binary_size}}</span>
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<el-tooltip class="tooltip-top" :content="app.binary_url|downcontent" placement="top"> <el-tooltip class="tooltip-top" :content="app.binary_url|downcontent" placement="top">
<el-button class="tooltip-top" tooltip="修改下载地址" <el-button class="tooltip-top" tooltip="修改下载地址"
@click="startEdit(app,'binary_url')"><i @click="startEdit(app,'binary_url')"><i class="el-icon-link"/> <span>下载地址</span>
class="el-icon-link"></i> <span>下载地址</span>
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<el-button class="tooltip-top" @click="previewRelase(app)"><i <el-button class="tooltip-top" @click="previewRelase(app)"><i class="el-icon-view"/> <span
class="el-icon-view"></i> <span class="ng-binding">预览</span> class="ng-binding">预览</span>
</el-button> </el-button>
<el-button v-if="! app.is_master" class="tooltip-top" @click="make_master_release(app)"> <el-button v-if="! app.is_master" class="tooltip-top" @click="make_master_release(app)">
<i class="el-icon-view"></i> <i class="el-icon-view"/>
<span class="ng-binding ng-scope">标记上线</span> <span class="ng-binding ng-scope">标记上线</span>
</el-button> </el-button>
<el-button v-if="(! app.is_master )|| (app.is_master && release_apps.length === 1)" <el-button v-if="(! app.is_master )|| (app.is_master && release_apps.length === 1)"
class="tooltip-top" @click="del_release_app(app)"> class="tooltip-top" @click="del_release_app(app)">
<i class="el-icon-delete"></i> <i class="el-icon-delete"/>
<span class="ng-binding ng-scope">删除</span> <span class="ng-binding ng-scope">删除</span>
</el-button> </el-button>
@ -128,7 +117,6 @@
editing: {'changelog': false, 'binary_url': false} editing: {'changelog': false, 'binary_url': false}
}, },
updatas: {}, updatas: {},
} }
}, },
methods: { methods: {
@ -412,50 +400,12 @@
color: #9b9b9b; color: #9b9b9b;
} }
.directive-view-release .edit-pen {
cursor: pointer
}
.directive-view-release .release-type {
position: relative;
display: inline-block;
margin-left: 8px;
padding: 2px 6px;
border: 1px solid;
border-radius: 5px
}
.directive-view-release .release-info {
margin-top: 6px
}
.directive-view-release .release-info i, .directive-view-release .release-info span {
display: inline-block;
vertical-align: middle
}
.directive-view-release .release-info span {
margin-right: 12px;
margin-left: 4px
}
.directive-view-release .release-actions { .directive-view-release .release-actions {
margin-top: 10px; margin-top: 10px;
position: relative position: relative
} }
.directive-view-release .release-actions .is-history {
display: inline-block
}
.directive-view-release .release-actions toggle {
margin-right: 8px
}
.directive-view-release .release-actions .comp-toggle.toggle-off {
background-color: #9b9b9b
}
.directive-view-release .release-actions a, .directive-view-release .release-actions button { .directive-view-release .release-actions a, .directive-view-release .release-actions button {
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
@ -467,7 +417,7 @@
padding: 4px 10px padding: 4px 10px
} }
.directive-view-release .release-actions .release-actions-group .mqc-wait-btn, .directive-view-release .release-actions .tooltip-top { .directive-view-release .release-actions .tooltip-top {
overflow: visible; overflow: visible;
position: relative position: relative
} }
@ -480,13 +430,11 @@
.directive-view-release .release-actions a.btn-save, .directive-view-release .release-actions button.btn-save { .directive-view-release .release-actions a.btn-save, .directive-view-release .release-actions button.btn-save {
border-color: #3d6df8; border-color: #3d6df8;
background-color: #92c1f8; background-color: #92c1f8;
color: #fff color: #fff
} }
.directive-view-release .release-actions a.btn-cancel, .directive-view-release .release-actions button.btn-cancel { .directive-view-release .release-actions a.btn-cancel, .directive-view-release .release-actions button.btn-cancel {
border: 0; border: 0;
} }
.directive-view-release .release-actions a.btn-cancel:hover, .directive-view-release .release-actions button.btn-cancel:hover { .directive-view-release .release-actions a.btn-cancel:hover, .directive-view-release .release-actions button.btn-cancel:hover {
@ -512,80 +460,4 @@
width: 500px width: 500px
} }
.time-line {
position: relative
}
.time-line:before {
position: absolute;
left: 25px;
z-index: 1;
height: 100%;
border-left: 1px solid rgba(151, 151, 151, .2);
content: ' '
}
.time-line li {
margin-top: 80px
}
.time-line li:first-child {
padding-left: 80px;
margin-top: 0
}
.time-line li:first-child .dot {
position: absolute;
left: 20px;
z-index: 2;
display: inline-block;
width: 10px;
height: 10px;
border: 1px solid rgba(151, 151, 151, .2);
border-radius: 50%;
background-color: #9b9b9b;
text-align: center
}
.time-line li:nth-child(2) {
margin-top: 20px
}
.time-line li:nth-child(3) {
margin-top: 40px
}
.time-line .filter {
position: relative;
top: -6px;
display: inline-block;
margin-right: 32px;
font-weight: 700;
cursor: pointer
}
.time-line .filter.active {
color: #4a4a4a
}
.time-line .filter.version-rollback .button {
display: inline-block;
vertical-align: middle;
background-color: transparent;
border: 1px solid;
padding: 4px 20px;
border-radius: 17px
}
.time-line .more button {
background: #f6f6f6;
border: 1px solid;
position: relative;
z-index: 99;
width: 160px;
padding: 10px 0;
border-radius: 40px
}
</style> </style>

@ -1,8 +1,6 @@
<template> <template>
<div>
<el-container> <el-container>
<el-header style="height: 100px"> <el-header style="height: 100px">
<el-dialog <el-dialog
:visible.sync="show_buy_download_times" :visible.sync="show_buy_download_times"
width="780px" width="780px"
@ -16,7 +14,7 @@
<div class="packages" style="max-width: 768px;"> <div class="packages" style="max-width: 768px;">
<div class="package-item" v-for="(packages,index) in data_package_prices" :key="packages.name"> <div class="package-item" v-for="(packages,index) in data_package_prices" :key="packages.name">
<div class="arraw-badge" v-if="index===1"><span></span> <span class="arraw"></span></div> <div class="arraw-badge" v-if="index===1"><span></span> <span class="arraw"/></div>
<div class="package-content"> <div class="package-content">
<div class="money ">{{ packages.price / 100 }}</div> <div class="money ">{{ packages.price / 100 }}</div>
<div class="times ">{{ packages.package_size |formatMoney }}</div> <div class="times ">{{ packages.package_size |formatMoney }}</div>
@ -75,7 +73,6 @@
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="willDeleteApp = false"> </el-button> <el-button @click="willDeleteApp = false"> </el-button>
<!-- <el-button v-if="delapp.issupersign" type="danger" @click="$router.push({name: 'FirAppInfossecurity', params: {id: delapp.app_id}})"> </el-button>-->
<el-button type="danger" @click="delApp"> </el-button> <el-button type="danger" @click="delApp"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -94,7 +91,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="grid-content bg-purple"> <div class="grid-content bg-purple">
<div style="width: 100px;height: 100px"> <div style="width: 100px;height: 100px">
<el-avatar shape="square" :size="100" :src="analyseappinfo.icon"></el-avatar> <el-avatar shape="square" :size="100" :src="analyseappinfo.icon"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -113,14 +110,14 @@
</el-row> </el-row>
<el-row :gutter="20" style="margin-top: 18px;"> <el-row :gutter="20" style="margin-top: 18px;">
<el-col :span="18"> <el-col :span="18">
<el-input v-model="analyseappinfo.appname"></el-input> <el-input v-model="analyseappinfo.appname"/>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider> <el-divider/>
<el-row :gutter="20"> <el-row :gutter="20">
@ -165,7 +162,7 @@
v-model="analyseappinfo.changelog" v-model="analyseappinfo.changelog"
placeholder="请输入内容" placeholder="请输入内容"
rows="5" rows="5"
show-word-limit></el-input> show-word-limit/>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
@ -174,53 +171,53 @@
</div> </div>
<div v-if="uploading"> <div v-if="uploading">
<canvas ref="canvas" class="canvas"/> <!-- <canvas ref="canvas" class="canvas"/>-->
<div class="wrap"> <div class="wrap">
<!--包裹所有元素的容器--> <!--包裹所有元素的容器-->
<div class="cube"> <div class="cube">
<!--前面图片 --> <!--前面图片 -->
<div class="out_front"> <div class="out_front">
<img src="@/assets/imgs/1.png" class="pic"> <img src="@/assets/imgs/1.png" class="pic" alt="">
</div> </div>
<!--后面图片 --> <!--后面图片 -->
<div class="out_back"> <div class="out_back">
<img src="@/assets/imgs/5.png" class="pic"> <img src="@/assets/imgs/5.png" class="pic" alt="">
</div> </div>
<!--左面图片 --> <!--左面图片 -->
<div class="out_left"> <div class="out_left">
<img src="@/assets/imgs/6.png" class="pic"> <img src="@/assets/imgs/6.png" class="pic" alt="">
</div> </div>
<!--右面图片 --> <!--右面图片 -->
<div class="out_right"> <div class="out_right">
<img src="@/assets/imgs/7.png" class="pic"> <img src="@/assets/imgs/7.png" class="pic" alt="">
</div> </div>
<!--上面图片 --> <!--上面图片 -->
<div class="out_top"> <div class="out_top">
<img src="@/assets/imgs/8.png" class="pic"> <img src="@/assets/imgs/8.png" class="pic" alt="">
</div> </div>
<!--下面图片 --> <!--下面图片 -->
<div class="out_bottom"> <div class="out_bottom">
<img src="@/assets/imgs/9.png" class="pic"> <img src="@/assets/imgs/9.png" class="pic" alt="">
</div> </div>
<!--小正方体 --> <!--小正方体 -->
<span class="in_front"> <span class="in_front">
<img :src="this.analyseappinfo.icon" class="in_pic"> <img :src="this.analyseappinfo.icon" class="in_pic" alt="">
</span> </span>
<span class="in_back"> <span class="in_back">
<img :src="this.analyseappinfo.icon" class="in_pic"> <img :src="this.analyseappinfo.icon" class="in_pic" alt="">
</span> </span>
<span class="in_left"> <span class="in_left">
<img :src="this.analyseappinfo.icon" class="in_pic"> <img :src="this.analyseappinfo.icon" class="in_pic" alt="">
</span> </span>
<span class="in_right"> <span class="in_right">
<img :src="this.analyseappinfo.icon" class="in_pic"> <img :src="this.analyseappinfo.icon" class="in_pic" alt="">
</span> </span>
<span class="in_top"> <span class="in_top">
<img :src="this.analyseappinfo.icon" class="in_pic"> <img :src="this.analyseappinfo.icon" class="in_pic" alt="">
</span> </span>
<span class="in_bottom"> <span class="in_bottom">
<img :src="this.analyseappinfo.icon" class="in_pic"> <img :src="this.analyseappinfo.icon" class="in_pic" alt="">
</span> </span>
</div> </div>
@ -228,7 +225,7 @@
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-progress :text-inside="true" :stroke-width="26" :percentage="uploadprocess" <el-progress :text-inside="true" :stroke-width="26" :percentage="uploadprocess"
v-if="uploadflag === true"></el-progress> v-if="uploadflag === true"/>
<el-button type="primary" plain @click="uploadcloud" v-else>{{ analyseappinfo.is_new|get_upload_text}}</el-button> <el-button type="primary" plain @click="uploadcloud" v-else>{{ analyseappinfo.is_new|get_upload_text}}</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -267,22 +264,22 @@
<el-col :span="12"> <el-col :span="12">
<div> <div>
<span class="name">iOS应用</span> <span class="name">iOS应用</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
<div> <div>
<span class="value">{{ hdata.ios_count }}</span> <span class="value">{{ hdata.ios_count }}</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<div> <div>
<span class="name">Android应用</span> <span class="name">Android应用</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
<div> <div>
<span class="value">{{ hdata.android_count }}</span> <span class="value">{{ hdata.android_count }}</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -293,22 +290,22 @@
<el-col :span="12"> <el-col :span="12">
<div> <div>
<span class="name">今日苹果下载次数</span> <span class="name">今日苹果下载次数</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
<div> <div>
<span class="value">{{ hdata.ios_today_hits_count }}</span> <span class="value">{{ hdata.ios_today_hits_count }}</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<div> <div>
<span class="name">今日安卓下载次数</span> <span class="name">今日安卓下载次数</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
<div> <div>
<span class="value">{{ hdata.android_today_hits_count }}</span> <span class="value">{{ hdata.android_today_hits_count }}</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -326,11 +323,11 @@
</div> </div>
<span class="name">今日剩余免费次数</span> <span class="name">今日剩余免费次数</span>
</el-tooltip> </el-tooltip>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
<div> <div>
<span class="value">{{$store.state.userinfo.free_download_times }}</span> <span class="value">{{$store.state.userinfo.free_download_times }}</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
</el-col> </el-col>
@ -340,11 +337,11 @@
<div slot="content">1.下载次数包没有时间限制用完为止<br/>2.购买的下载次数包为总下载量不会每日重置</div> <div slot="content">1.下载次数包没有时间限制用完为止<br/>2.购买的下载次数包为总下载量不会每日重置</div>
<span class="name">剩余付费次数</span> <span class="name">剩余付费次数</span>
</el-tooltip> </el-tooltip>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
<div> <div>
<span class="value">{{$store.state.userinfo.download_times }}</span> <span class="value">{{$store.state.userinfo.download_times }}</span>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"/>
</div> </div>
</el-col> </el-col>
@ -360,7 +357,7 @@
</div> </div>
<div> <div>
<el-button class="action" size="small" icon="el-icon-shopping-cart-1" <el-button class="action" size="small" icon="el-icon-shopping-cart-1"
@click="show_package_prices"></el-button> @click="show_package_prices"/>
</div> </div>
</el-col> </el-col>
@ -369,17 +366,11 @@
</el-row> </el-row>
</el-header> </el-header>
<div ref="appmain" style="margin: 40px 20px;height: 100%;width:1166px">
<div
ref="appmain" style="margin: 40px 20px;height: 100%">
<el-row style="max-height: 460px; margin: 0 auto;" :gutter="10" class="page-apps"> <el-row style="max-height: 460px; margin: 0 auto;" :gutter="10" class="page-apps">
<el-col style="width: 30%;height: 460px ;margin-left: 3%">
<el-col style="width: 33%;height: 460px ">
<div class=" app-animator appdownload"> <div class=" app-animator appdownload">
<div class=" card app card-ios" style="padding: 0"> <div class=" card app card-ios" style="padding: 0">
<el-upload <el-upload
drag drag
:show-file-list="false" :show-file-list="false"
@ -387,7 +378,7 @@
accept=".ipa , .apk" accept=".ipa , .apk"
action="#" action="#"
multiple> multiple>
<i class="el-icon-upload" style="color: #fff"></i> <i class="el-icon-upload" style="color: #fff"/>
<div class="el-upload__text" style="color: #fff;margin-top: 20px">拖拽到这里上传</div> <div class="el-upload__text" style="color: #fff;margin-top: 20px">拖拽到这里上传</div>
</el-upload> </el-upload>
@ -395,32 +386,33 @@
</div> </div>
</el-col> </el-col>
<el-col style="width: 33%;height: 460px" <el-col style="width: 30%;height: 460px;margin-left: 3%"
v-for="(r,index) in applists" :key="r.id" @click="appInfos(index)"> v-for="(r,index) in applists" :key="r.id" @click="appInfos(index)">
<div class=" app-animator"> <div class=" app-animator">
<div class="card app card-ios"> <div class="card app card-ios">
<i class=" type-icon iconfont icon-ios" v-if="r.type === 1" src=""></i> <i class=" type-icon iconfont icon-ios" v-if="r.type === 1"/>
<i class="type-icon iconfont icon-android2" v-if="r.type === 0"></i> <i class="type-icon iconfont icon-android2" v-if="r.type === 0"/>
<div class="type-mark" v-if="r.type === 1"></div> <div class="type-mark" v-if="r.type === 1"></div>
<div class="type-mark" style="border-top: 48px solid #A4C639" v-if="r.type === 0"></div> <div class="type-mark" style="border-top: 48px solid #A4C639" v-if="r.type === 0"></div>
<a class="appicon" @click="appInfos(r)"> <a class="appicon" @click="appInfos(r)">
<img class="icon ng-isolate-scope" width="100" height="100" <img class="icon ng-isolate-scope" width="100" height="100"
:src="r.master_release.icon_url|make_icon_url"></a> :src="r.master_release.icon_url|make_icon_url" alt=""></a>
<div class="combo-info ng-scope" v-if="r.has_combo !== null "> <div class="combo-info ng-scope" v-if="r.has_combo !== null ">
<i class="el-icon-copy-document" style="transform:rotateX(180deg);"></i> <i class="el-icon-copy-document" style="transform:rotateX(180deg);"/>
<a @click="appInfos(r.has_combo)"> <a @click="appInfos(r.has_combo)">
<img class="icon ng-isolate-scope" width="45" height="45" <img class="icon ng-isolate-scope" width="45" height="45"
:src="r.has_combo.master_release.icon_url|make_icon_url"> :src="r.has_combo.master_release.icon_url|make_icon_url" alt="">
</a> </a>
</div> </div>
<br> <br>
<p class="appname"><i class="el-icon-user-solid"></i><span class="ng-binding">{{ r.name }}</span> <p class="appname"><i class="el-icon-user-solid"/><span
class="ng-binding">{{ r.name }}</span>
</p> </p>
<table> <table>
<tbody> <tbody>
@ -468,19 +460,19 @@
<div class="action"> <div class="action">
<el-button @click="appInfos(r)"> <el-button @click="appInfos(r)">
<i class="icon-pen el-icon-edit"></i> 管理 <i class="icon-pen el-icon-edit"/> 管理
</el-button> </el-button>
<el-button @click="appDownload(r)" class="ng-binding"> <el-button @click="appDownload(r)" class="ng-binding">
<i class="icon-eye el-icon-view"></i> 预览 <i class="icon-eye el-icon-view"/> 预览
</el-button> </el-button>
<el-button v-if="r.issupersign" @click="DeleteApp(r)" class="btn btn-remove" <el-button v-if="r.issupersign" @click="DeleteApp(r)" class="btn btn-remove"
icon="el-icon-loading" icon="el-icon-loading"
circle></el-button> circle/>
<el-button v-else @click="DeleteApp(r)" class="btn btn-remove" icon="el-icon-delete" <el-button v-else @click="DeleteApp(r)" class="btn btn-remove" icon="el-icon-delete"
circle></el-button> circle/>
</div> </div>
</div> </div>
@ -491,12 +483,8 @@
</el-row> </el-row>
</div> </div>
</el-container> </el-container>
</div>
</template> </template>
<script> <script>
import {analyseApps, apputils, get_package_prices, getapps, getuploadurl, my_order} from "@/restful"; import {analyseApps, apputils, get_package_prices, getapps, getuploadurl, my_order} from "@/restful";
import { import {
@ -506,7 +494,6 @@
getScrollHeight, getScrollHeight,
getScrollTop, getScrollTop,
getWindowHeight, getWindowHeight,
show_beautpic,
uploadaliyunoss, uploadaliyunoss,
uploadlocalstorage, uploadlocalstorage,
uploadqiniuoss uploadqiniuoss
@ -520,7 +507,7 @@
default_pay_radio: '', default_pay_radio: '',
default_price_radio: '', default_price_radio: '',
pay_choices: [], pay_choices: [],
analyseappinfo: {}, analyseappinfo: {icon: ''},
short: '', short: '',
keysearch: '', keysearch: '',
searchfromtype: '', searchfromtype: '',
@ -707,10 +694,10 @@
this.uploadflag = true; this.uploadflag = true;
this.uploading = true; this.uploading = true;
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
this.timmer = setTimeout(data => { // this.timmer = setTimeout(data => {
let canvas = this.$refs.canvas; // let canvas = this.$refs.canvas;
show_beautpic(this, canvas, 888, 0.6); // show_beautpic(this, canvas, 888, 0.6);
}, 100); // }, 100);
let file = dataURLtoFile(this.analyseappinfo.icon, this.analyseappinfo.png_key); let file = dataURLtoFile(this.analyseappinfo.icon, this.analyseappinfo.png_key);
@ -888,7 +875,6 @@
}); });
}, },
DeleteApp(delapp) { DeleteApp(delapp) {
//
this.willDeleteApp = true; this.willDeleteApp = true;
this.delapp = delapp; this.delapp = delapp;
}, },
@ -1000,13 +986,11 @@
</script> </script>
<style scoped> <style scoped>
.el-container { .el-container {
margin: 10px auto 100px; margin: 10px auto 100px;
width: 1166px; width: 1266px;
position: relative; position: relative;
padding-bottom: 1px; padding-bottom: 1px;
background-color: #bfe7f9;
color: #9b9b9b; color: #9b9b9b;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border-radius: 1%; border-radius: 1%;
@ -1016,7 +1000,6 @@
margin-top: 20px; margin-top: 20px;
padding-top: 30px; padding-top: 30px;
border-bottom: 1px solid rgba(208, 208, 208, .5); border-bottom: 1px solid rgba(208, 208, 208, .5);
background-color: #d5f9f9;
border-radius: 10px; border-radius: 10px;
} }
@ -1025,7 +1008,6 @@
text-align: right; text-align: right;
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
/*border-right: 1px solid #9b9b9b;*/
} }
@ -1053,15 +1035,14 @@
width: 96%; width: 96%;
height: 96%; height: 96%;
margin: 2px auto; /*水平居中*/ margin: 2px auto; /*水平居中*/
/*background: #f8ba0b;*/
border-radius: 5px; border-radius: 5px;
} }
.appdownload /deep/ .el-upload-dragger { .appdownload /deep/ .el-upload-dragger {
width: 349.22px; width: 339.8px;
height: 430px; height: 430px;
background: #9cb8f8; background: #8bc3f8;
border: 0; border: 0;
} }

@ -10,35 +10,35 @@
<div v-if="editdeveloperinfo.auth_type===0"> <div v-if="editdeveloperinfo.auth_type===0">
<el-form-item label-width="110px" label="issuer_id"> <el-form-item label-width="110px" label="issuer_id">
<el-input :disabled='isedit' v-model="editdeveloperinfo.issuer_id"></el-input> <el-input :disabled='isedit' v-model="editdeveloperinfo.issuer_id"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="private_key_id"> <el-form-item label-width="110px" label="private_key_id">
<el-input v-model="editdeveloperinfo.private_key_id"></el-input> <el-input v-model="editdeveloperinfo.private_key_id"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="p8key"> <el-form-item label-width="110px" label="p8key">
<el-input type="textarea" <el-input type="textarea"
:rows="6" v-model="editdeveloperinfo.p8key" :placeholder="placeholder"></el-input> :rows="6" v-model="editdeveloperinfo.p8key" :placeholder="placeholder"/>
</el-form-item> </el-form-item>
</div> </div>
<div v-if="editdeveloperinfo.auth_type===1"> <div v-if="editdeveloperinfo.auth_type===1">
<el-form-item label-width="110px" label="APP_ID"> <el-form-item label-width="110px" label="APP_ID">
<el-input :disabled='isedit' v-model="editdeveloperinfo.email"></el-input> <el-input :disabled='isedit' v-model="editdeveloperinfo.email"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="password"> <el-form-item label-width="110px" label="password">
<el-input v-model="editdeveloperinfo.password" :placeholder="placeholder"></el-input> <el-input v-model="editdeveloperinfo.password" :placeholder="placeholder"/>
</el-form-item> </el-form-item>
</div> </div>
<el-form-item label-width="110px" label="设备数量"> <el-form-item label-width="110px" label="设备数量">
<el-input v-model="editdeveloperinfo.usable_number"></el-input> <el-input v-model="editdeveloperinfo.usable_number"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="备注"> <el-form-item label-width="110px" label="备注">
<el-input v-model="editdeveloperinfo.description"></el-input> <el-input v-model="editdeveloperinfo.description"/>
</el-form-item> </el-form-item>
<div style=""> <div style="">
<el-button v-if="isedit && editdeveloperinfo.is_actived" size="small" @click="syncdevices">同步设备信息 <el-button v-if="isedit && editdeveloperinfo.is_actived" size="small" @click="syncdevices">同步设备信息
@ -96,7 +96,7 @@
type="line" type="line"
:color="developer_usedColor" :color="developer_usedColor"
:text-inside="true" :stroke-width="18" :percentage="percentage" :text-inside="true" :stroke-width="18" :percentage="percentage"
status="success"></el-progress> status="success"/>
</div> </div>
<el-table <el-table
@ -120,10 +120,10 @@
?scope.row.usable_number-scope.row.developer_used_number :0 }}</p> ?scope.row.usable_number-scope.row.developer_used_number :0 }}</p>
<div slot="reference" class="name-wrapper"> <div slot="reference" class="name-wrapper">
<el-tag size="medium" v-if="scope.row.email"><i class="el-icon-s-custom"></i> {{ <el-tag size="medium" v-if="scope.row.email"><i class="el-icon-s-custom"/> {{
scope.row.email }} scope.row.email }}
</el-tag> </el-tag>
<el-tag size="medium" v-if="scope.row.issuer_id"><i class="el-icon-key"></i> {{ <el-tag size="medium" v-if="scope.row.issuer_id"><i class="el-icon-key"/> {{
scope.row.issuer_id }} scope.row.issuer_id }}
</el-tag> </el-tag>
</div> </div>
@ -233,41 +233,41 @@
<el-select v-model="editdeveloperinfo.auth_type" placeholder="认证类型" <el-select v-model="editdeveloperinfo.auth_type" placeholder="认证类型"
style="margin-left: -100px"> style="margin-left: -100px">
<el-option v-for="st in apple_auth_list" :key="st.id" :label="st.name" <el-option v-for="st in apple_auth_list" :key="st.id" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<div v-if="editdeveloperinfo.auth_type===0"> <div v-if="editdeveloperinfo.auth_type===0">
<el-form-item label-width="110px" label="issuer_id"> <el-form-item label-width="110px" label="issuer_id">
<el-input :disabled='isedit' v-model="editdeveloperinfo.issuer_id"></el-input> <el-input :disabled='isedit' v-model="editdeveloperinfo.issuer_id"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="private_key_id"> <el-form-item label-width="110px" label="private_key_id">
<el-input v-model="editdeveloperinfo.private_key_id" :placeholder="placeholder"></el-input> <el-input v-model="editdeveloperinfo.private_key_id" :placeholder="placeholder"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="p8key"> <el-form-item label-width="110px" label="p8key">
<el-input type="textarea" <el-input type="textarea"
:rows="6" v-model="editdeveloperinfo.p8key" :placeholder="placeholder"></el-input> :rows="6" v-model="editdeveloperinfo.p8key" :placeholder="placeholder"/>
</el-form-item> </el-form-item>
</div> </div>
<div v-if="editdeveloperinfo.auth_type===1"> <div v-if="editdeveloperinfo.auth_type===1">
<el-form-item label-width="110px" label="APP_ID"> <el-form-item label-width="110px" label="APP_ID">
<el-input :disabled='isedit' v-model="editdeveloperinfo.email"></el-input> <el-input :disabled='isedit' v-model="editdeveloperinfo.email"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="password"> <el-form-item label-width="110px" label="password">
<el-input v-model="editdeveloperinfo.password" :placeholder="placeholder"></el-input> <el-input v-model="editdeveloperinfo.password" :placeholder="placeholder"/>
</el-form-item> </el-form-item>
</div> </div>
<el-form-item label-width="110px" label="设备数量"> <el-form-item label-width="110px" label="设备数量">
<el-input v-model="editdeveloperinfo.usable_number"></el-input> <el-input v-model="editdeveloperinfo.usable_number"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="备注"> <el-form-item label-width="110px" label="备注">
<el-input v-model="editdeveloperinfo.description"></el-input> <el-input v-model="editdeveloperinfo.description"/>
</el-form-item> </el-form-item>
<div style=""> <div style="">
<el-button @click="updateorcreate">添加</el-button> <el-button @click="updateorcreate">添加</el-button>
@ -753,15 +753,13 @@
<style scoped> <style scoped>
.el-main { .el-main {
margin: 10px auto 100px; margin: 20px auto 100px;
width: 1166px; width: 1266px;
position: relative; position: relative;
padding-bottom: 1px; padding-bottom: 1px;
background-color: #bfe7f9;
color: #9b9b9b; color: #9b9b9b;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border-radius: 1%; border-radius: 1%;
} }
</style> </style>

@ -441,11 +441,10 @@
<style scoped> <style scoped>
.el-main { .el-main {
margin: 10px auto 100px; margin: 20px auto 100px;
width: 1166px; width: 1266px;
position: relative; position: relative;
padding-bottom: 1px; padding-bottom: 1px;
background-color: #bfe7f9;
color: #9b9b9b; color: #9b9b9b;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border-radius: 1%; border-radius: 1%;

@ -140,11 +140,8 @@
<style scoped> <style scoped>
.el-main { .el-main {
margin: 10px auto 100px;
width: 1166px;
position: relative; position: relative;
padding-bottom: 1px; padding-bottom: 1px;
background-color: #bfe7f9;
color: #9b9b9b; color: #9b9b9b;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border-radius: 1%; border-radius: 1%;
@ -153,8 +150,8 @@
.user-info { .user-info {
position: relative; position: relative;
text-align: center; text-align: center;
margin-bottom: 60px; margin: 46px auto 100px;
margin-top: 46px; width: 1266px;
} }
.avatar { .avatar {

@ -192,7 +192,6 @@
action="#" action="#"
accept=".png , .jpg , .jpeg" accept=".png , .jpg , .jpeg"
:before-upload="upload_three"> :before-upload="upload_three">
<el-tooltip v-if="user_certification.three" placement="top"> <el-tooltip v-if="user_certification.three" placement="top">
<div slot="content">上传<i style="color: #2abb9d!important;">手持身份证</i>照片</div> <div slot="content">上传<i style="color: #2abb9d!important;">手持身份证</i>照片</div>
<img :src="user_certification.three" <img :src="user_certification.three"
@ -436,8 +435,7 @@
float: left; float: left;
width: 200px; width: 200px;
height: 166px; height: 166px;
background-color: #d1eef9; background-color: #c2dcf1;
} }
.avatar-uploader .el-upload { .avatar-uploader .el-upload {
@ -453,7 +451,6 @@
} }
.avatar-uploader-icon { .avatar-uploader-icon {
/*font-size: 28px;*/
color: #8c939d; color: #8c939d;
width: 158px; width: 158px;
height: 158px; height: 158px;

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<el-form ref="form" :model="form"> <el-form ref="form" :model="form" label-width="90px">
<el-form-item label="当前密码"> <el-form-item label="当前密码">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="18"> <el-col :span="18">
@ -30,7 +30,7 @@
<el-form-item> <el-form-item>
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="24"> <el-col :span="20">
<el-button type="primary" @click="updatepasswd">更新密码</el-button> <el-button type="primary" @click="updatepasswd">更新密码</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -88,17 +88,11 @@
margin: 0 auto; margin: 0 auto;
} }
.el-form-item .el-button { .el-button {
margin-top: 20px; margin-top: 20px;
max-width: 260px; max-width: 260px;
width: 100%; width: 100%;
height: 50px; height: 50px;
/*margin-left: 40px;*/
} }
/deep/ .el-form-item__label {
width: 90px;
}
</style> </style>

@ -1,10 +1,10 @@
<template> <template>
<div> <div>
<el-form ref="form" :model="userinfo"> <el-form ref="form" :model="userinfo" label-width="90px">
<el-form-item label="用户名"> <el-form-item label="用户名">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="13"> <el-col :span="16">
<el-input v-model="userinfo.username" :readonly="edituser_name !== true" <el-input v-model="userinfo.username" :readonly="edituser_name !== true"
prefix-icon="el-icon-user" placeholder="用户名" ref="user_name" prefix-icon="el-icon-user" placeholder="用户名" ref="user_name"
clearable/> clearable/>
@ -14,7 +14,7 @@
<el-button icon="el-icon-edit" @click="changeUsernameValue"> <el-button icon="el-icon-edit" @click="changeUsernameValue">
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="4" v-if="edituser_name === true"> <el-col :span="5" v-if="edituser_name === true">
<el-button type="success" @click="saveUsername" plain <el-button type="success" @click="saveUsername" plain
class="save-button"> class="save-button">
保存 保存
@ -27,7 +27,7 @@
<el-form-item label="手机号码"> <el-form-item label="手机号码">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="13"> <el-col :span="16">
<el-input v-model="userinfo.mobile" ref="phone" :readonly="editphone !== true" <el-input v-model="userinfo.mobile" ref="phone" :readonly="editphone !== true"
prefix-icon="el-icon-mobile" placeholder="手机" maxlength="11" clearable/> prefix-icon="el-icon-mobile" placeholder="手机" maxlength="11" clearable/>
</el-col> </el-col>
@ -35,7 +35,7 @@
<el-button icon="el-icon-edit" @click="changePhoneValue"> <el-button icon="el-icon-edit" @click="changePhoneValue">
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="4" v-if="editphone === true"> <el-col :span="5" v-if="editphone === true">
<el-button type="success" @click="savePhone" plain <el-button type="success" @click="savePhone" plain
class="save-button"> class="save-button">
保存 保存
@ -46,7 +46,7 @@
<el-form-item label="图片验证码" style="height: 40px" v-if="editphone === true && cptch.cptch_image"> <el-form-item label="图片验证码" style="height: 40px" v-if="editphone === true && cptch.cptch_image">
<el-row style="height: 40px" :gutter="36"> <el-row style="height: 40px" :gutter="36">
<el-col :span="10"> <el-col :span="14">
<el-input placeholder="请输入图片验证码" v-model="userinfo.authcode" maxlength="6" clearable/> <el-input placeholder="请输入图片验证码" v-model="userinfo.authcode" maxlength="6" clearable/>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -61,11 +61,11 @@
<el-form-item label="手机验证码" v-if="editphone === true"> <el-form-item label="手机验证码" v-if="editphone === true">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="10"> <el-col :span="16">
<el-input v-model="userinfo.auth_key" prefix-icon="el-icon-mobile" placeholder="验证码" <el-input v-model="userinfo.auth_key" prefix-icon="el-icon-mobile" placeholder="验证码"
maxlength="6" clearable/> maxlength="6" clearable/>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-button type="info" @click="getsmsemailcode('sms',userinfo.mobile)" plain <el-button type="info" @click="getsmsemailcode('sms',userinfo.mobile)" plain
class="save-button"> class="save-button">
获取验证码 获取验证码
@ -78,7 +78,7 @@
<el-form-item label="邮箱地址"> <el-form-item label="邮箱地址">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="13"> <el-col :span="16">
<el-input v-model="userinfo.email" ref="email" :readonly="editemail !== true" <el-input v-model="userinfo.email" ref="email" :readonly="editemail !== true"
prefix-icon="el-icon-bank-card" placeholder="邮箱" maxlength="20" clearable/> prefix-icon="el-icon-bank-card" placeholder="邮箱" maxlength="20" clearable/>
</el-col> </el-col>
@ -86,7 +86,7 @@
<el-button icon="el-icon-edit" @click="changeemailValue"> <el-button icon="el-icon-edit" @click="changeemailValue">
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="4" v-if="editemail === true"> <el-col :span="5" v-if="editemail === true">
<el-button type="success" @click="saveemail" plain <el-button type="success" @click="saveemail" plain
class="save-button"> class="save-button">
保存 保存
@ -98,7 +98,7 @@
<el-form-item label="图片验证码" style="height: 40px" v-if="editemail === true && cptch.cptch_image"> <el-form-item label="图片验证码" style="height: 40px" v-if="editemail === true && cptch.cptch_image">
<el-row style="height: 40px" :gutter="36"> <el-row style="height: 40px" :gutter="36">
<el-col :span="10"> <el-col :span="14">
<el-input placeholder="请输入图片验证码" v-model="userinfo.authcode" maxlength="6" clearable/> <el-input placeholder="请输入图片验证码" v-model="userinfo.authcode" maxlength="6" clearable/>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -113,11 +113,11 @@
<el-form-item label="邮箱验证码" v-if="editemail === true"> <el-form-item label="邮箱验证码" v-if="editemail === true">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="10"> <el-col :span="16">
<el-input v-model="userinfo.auth_key" prefix-icon="el-icon-mobile" placeholder="验证码" <el-input v-model="userinfo.auth_key" prefix-icon="el-icon-mobile" placeholder="验证码"
maxlength="6" clearable/> maxlength="6" clearable/>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-button type="info" @click="getsmsemailcode('email',userinfo.email)" plain <el-button type="info" @click="getsmsemailcode('email',userinfo.email)" plain
class="save-button"> class="save-button">
获取验证码 获取验证码
@ -130,7 +130,7 @@
<el-form-item label="下载域名"> <el-form-item label="下载域名">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="13"> <el-col :span="16">
<el-input v-model="userinfo.domain_name" :readonly="editdomain_name !== true" ref="domain_name" <el-input v-model="userinfo.domain_name" :readonly="editdomain_name !== true" ref="domain_name"
prefix-icon="el-icon-download" prefix-icon="el-icon-download"
placeholder="下载页域名" clearable/> placeholder="下载页域名" clearable/>
@ -139,7 +139,7 @@
<el-button icon="el-icon-edit" @click="changeDomainValue"> <el-button icon="el-icon-edit" @click="changeDomainValue">
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="4" v-if="editdomain_name === true"> <el-col :span="5" v-if="editdomain_name === true">
<el-button type="success" @click="saveDomain" plain <el-button type="success" @click="saveDomain" plain
class="save-button"> class="save-button">
保存 保存
@ -150,7 +150,7 @@
<el-form-item label="职位"> <el-form-item label="职位">
<el-row :gutter="36"> <el-row :gutter="36">
<el-col :span="13"> <el-col :span="16">
<el-input v-model="userinfo.job" ref="position" :readonly="editposition !== true" <el-input v-model="userinfo.job" ref="position" :readonly="editposition !== true"
prefix-icon="el-icon-postcard" placeholder="职位" clearable/> prefix-icon="el-icon-postcard" placeholder="职位" clearable/>
</el-col> </el-col>
@ -158,7 +158,7 @@
<el-button icon="el-icon-edit" @click="changePositionValue"> <el-button icon="el-icon-edit" @click="changePositionValue">
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="4" v-if="editposition === true"> <el-col :span="5" v-if="editposition === true">
<el-button type="success" @click="savePositionValue" plain <el-button type="success" @click="savePositionValue" plain
class="save-button"> class="save-button">
保存 保存
@ -363,9 +363,6 @@
margin: 0 auto; margin: 0 auto;
} }
/deep/ .el-form-item__label {
width: 90px;
}
.el-button { .el-button {
padding: 0; padding: 0;

@ -1,5 +1,5 @@
<template> <template>
<el-main style="text-align:center"> <el-main>
<h2 v-if="is_admin_storage">管理员存储您配置的存储将决定其他用户配置的默认存储请谨慎修改</h2> <h2 v-if="is_admin_storage">管理员存储您配置的存储将决定其他用户配置的默认存储请谨慎修改</h2>
<el-dialog :title="title" :visible.sync="dialogstorageVisible" :destroy-on-close="true" <el-dialog :title="title" :visible.sync="dialogstorageVisible" :destroy-on-close="true"
:close-on-click-modal="false"> :close-on-click-modal="false">
@ -9,38 +9,38 @@
<el-form-item label-width="100px" label="存储类型"> <el-form-item label-width="100px" label="存储类型">
<el-select :disabled='disabled' v-model="editstorageinfo.storage_type" placeholder="存储类型" <el-select :disabled='disabled' v-model="editstorageinfo.storage_type" placeholder="存储类型"
style="margin-left: -100px"> style="margin-left: -100px">
<el-option v-for="st in storage_list" :key="st.id" :label="st.name" :value="st.id"></el-option> <el-option v-for="st in storage_list" :key="st.id" :label="st.name" :value="st.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<div v-if="editstorageinfo.storage_type"> <div v-if="editstorageinfo.storage_type">
<el-form-item label-width="110px" label="存储名称"> <el-form-item label-width="110px" label="存储名称">
<el-input :disabled='disabled' v-model="editstorageinfo.name"></el-input> <el-input :disabled='disabled' v-model="editstorageinfo.name"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="key"> <el-form-item label-width="110px" label="key">
<el-input :disabled='disabled' v-model="editstorageinfo.access_key"></el-input> <el-input :disabled='disabled' v-model="editstorageinfo.access_key"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="secret"> <el-form-item label-width="110px" label="secret">
<el-input :disabled='disabled' v-model="editstorageinfo.secret_key"></el-input> <el-input :disabled='disabled' v-model="editstorageinfo.secret_key"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="bucket_name"> <el-form-item label-width="110px" label="bucket_name">
<el-input :disabled='disabled' v-model="editstorageinfo.bucket_name"></el-input> <el-input :disabled='disabled' v-model="editstorageinfo.bucket_name"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="下载域名"> <el-form-item label-width="110px" label="下载域名">
<el-input :disabled='disabled' v-model="editstorageinfo.domain_name"></el-input> <el-input :disabled='disabled' v-model="editstorageinfo.domain_name"/>
</el-form-item> </el-form-item>
<div v-if="editstorageinfo.storage_type === 2"> <div v-if="editstorageinfo.storage_type === 2">
<el-form-item label-width="110px" label="sts_role_arn"> <el-form-item label-width="110px" label="sts_role_arn">
<el-input :disabled='disabled' <el-input :disabled='disabled'
v-model="editstorageinfo.sts_role_arn"></el-input> v-model="editstorageinfo.sts_role_arn"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="endpoint"> <el-form-item label-width="110px" label="endpoint">
<el-input :disabled='disabled' <el-input :disabled='disabled'
v-model="editstorageinfo.endpoint"></el-input> v-model="editstorageinfo.endpoint"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="下载授权方式"> <el-form-item label-width="110px" label="下载授权方式">
@ -49,7 +49,7 @@
style="width: 80%" :disabled="disabled"> style="width: 80%" :disabled="disabled">
<el-option v-for="st in editstorageinfo.download_auth_type_choices" :key="st.id" <el-option v-for="st in editstorageinfo.download_auth_type_choices" :key="st.id"
:label="st.name" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
<el-form-item label-width="120px" style="margin-top: 10px;margin-left: 70px;width: 60%" <el-form-item label-width="120px" style="margin-top: 10px;margin-left: 70px;width: 60%"
@ -64,7 +64,7 @@
</div> </div>
<el-form-item label-width="110px" label="备注"> <el-form-item label-width="110px" label="备注">
<el-input :disabled='disabled' v-model="editstorageinfo.description"></el-input> <el-input :disabled='disabled' v-model="editstorageinfo.description"/>
</el-form-item> </el-form-item>
<el-button v-if="!disabled" @click="updateorcreate">保存</el-button> <el-button v-if="!disabled" @click="updateorcreate">保存</el-button>
@ -76,8 +76,6 @@
<el-tabs v-model="activeName" @tab-click="handleClick" tab-position="top" type="border-card"> <el-tabs v-model="activeName" @tab-click="handleClick" tab-position="top" type="border-card">
<el-tab-pane label="存储选择" name="change"> <el-tab-pane label="存储选择" name="change">
<el-select v-model="use_storage_id" filterable :placeholder="selectlabel" @change="select_storage"> <el-select v-model="use_storage_id" filterable :placeholder="selectlabel" @change="select_storage">
<el-option-group <el-option-group
v-for="storage_group in fstorage_lists" v-for="storage_group in fstorage_lists"
@ -103,47 +101,46 @@
强制迁移忽略数据迁移失败错误可能会导致数据丢失 强制迁移忽略数据迁移失败错误可能会导致数据丢失
</el-button> </el-button>
</div> </div>
<el-divider/>
<el-divider></el-divider>
<el-form v-if="storageinfo.id && storageinfo.id !==-1" ref="storageinfoform" :model="storageinfo" <el-form v-if="storageinfo.id && storageinfo.id !==-1" ref="storageinfoform" :model="storageinfo"
label-width="80px" style="width: 39%;margin:0 auto;"> label-width="80px" style="width: 39%;margin:0 auto;">
<el-form-item label-width="110px" label="存储类型"> <el-form-item label-width="110px" label="存储类型">
<el-select :disabled='Sdisabled' v-model="storageinfo.storage_type" placeholder="存储类型" <el-select :disabled='Sdisabled' v-model="storageinfo.storage_type" placeholder="存储类型"
style="margin-left: -60px"> style="margin-left: -60px">
<el-option v-for="st in storage_list" :key="st.id" :label="st.name" <el-option v-for="st in storage_list" :key="st.id" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<div v-if="storageinfo.storage_type"> <div v-if="storageinfo.storage_type">
<el-form-item label-width="110px" label="存储名称"> <el-form-item label-width="110px" label="存储名称">
<el-input :disabled='Sdisabled' v-model="storageinfo.name"></el-input> <el-input :disabled='Sdisabled' v-model="storageinfo.name"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="key"> <el-form-item label-width="110px" label="key">
<el-input :disabled='Sdisabled' v-model="storageinfo.access_key"></el-input> <el-input :disabled='Sdisabled' v-model="storageinfo.access_key"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="secret"> <el-form-item label-width="110px" label="secret">
<el-input :disabled='Sdisabled' v-model="storageinfo.secret_key"></el-input> <el-input :disabled='Sdisabled' v-model="storageinfo.secret_key"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="bucket_name"> <el-form-item label-width="110px" label="bucket_name">
<el-input :disabled='Sdisabled' v-model="storageinfo.bucket_name"></el-input> <el-input :disabled='Sdisabled' v-model="storageinfo.bucket_name"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="下载域名"> <el-form-item label-width="110px" label="下载域名">
<el-input :disabled='Sdisabled' v-model="storageinfo.domain_name"></el-input> <el-input :disabled='Sdisabled' v-model="storageinfo.domain_name"/>
</el-form-item> </el-form-item>
<div v-if="storageinfo.storage_type === 2"> <div v-if="storageinfo.storage_type === 2">
<el-form-item label-width="110px" label="sts_role_arn"> <el-form-item label-width="110px" label="sts_role_arn">
<el-input :disabled='Sdisabled' <el-input :disabled='Sdisabled'
v-model="storageinfo.sts_role_arn"></el-input> v-model="storageinfo.sts_role_arn"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="endpoint"> <el-form-item label-width="110px" label="endpoint">
<el-input :disabled='Sdisabled' <el-input :disabled='Sdisabled'
v-model="storageinfo.endpoint"></el-input> v-model="storageinfo.endpoint"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="下载授权方式"> <el-form-item label-width="110px" label="下载授权方式">
@ -152,7 +149,7 @@
style="width: 100%" :disabled="disabled"> style="width: 100%" :disabled="disabled">
<el-option v-for="st in storageinfo.download_auth_type_choices" :key="st.id" <el-option v-for="st in storageinfo.download_auth_type_choices" :key="st.id"
:label="st.name" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
<el-form-item label-width="120px" style="margin-top: 10px;width: 100%" label="CDN鉴权主KEY" <el-form-item label-width="120px" style="margin-top: 10px;width: 100%" label="CDN鉴权主KEY"
@ -165,7 +162,7 @@
</div> </div>
<el-form-item label-width="110px" label="备注"> <el-form-item label-width="110px" label="备注">
<el-input :disabled='Sdisabled' v-model="storageinfo.description"></el-input> <el-input :disabled='Sdisabled' v-model="storageinfo.description"/>
</el-form-item> </el-form-item>
</div> </div>
@ -194,8 +191,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="domain_name" prop="domain_name"
label="下载域名" label="下载域名">
width="180">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="bucket_name" prop="bucket_name"
@ -211,13 +207,12 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="description" prop="description"
label="备注" label="备注">
width="200">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
fixed="right" fixed="right"
label="操作" label="操作"
> width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.id === org_storage_id"> <div v-if="scope.row.id === org_storage_id">
<el-button v-if="scope.row.id === org_storage_id" @click="showstorage(scope.row)" <el-button v-if="scope.row.id === org_storage_id" @click="showstorage(scope.row)"
@ -241,38 +236,38 @@
<el-select v-model="editstorageinfo.storage_type" placeholder="存储类型" <el-select v-model="editstorageinfo.storage_type" placeholder="存储类型"
style="margin-left: -100px"> style="margin-left: -100px">
<el-option v-for="st in storage_list" :key="st.id" :label="st.name" <el-option v-for="st in storage_list" :key="st.id" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<div v-if="editstorageinfo.storage_type"> <div v-if="editstorageinfo.storage_type">
<el-form-item label-width="110px" label="存储名称"> <el-form-item label-width="110px" label="存储名称">
<el-input v-model="editstorageinfo.name"></el-input> <el-input v-model="editstorageinfo.name"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="key"> <el-form-item label-width="110px" label="key">
<el-input v-model="editstorageinfo.access_key"></el-input> <el-input v-model="editstorageinfo.access_key"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="secret"> <el-form-item label-width="110px" label="secret">
<el-input v-model="editstorageinfo.secret_key"></el-input> <el-input v-model="editstorageinfo.secret_key"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="bucket_name"> <el-form-item label-width="110px" label="bucket_name">
<el-input v-model="editstorageinfo.bucket_name"></el-input> <el-input v-model="editstorageinfo.bucket_name"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="下载域名"> <el-form-item label-width="110px" label="下载域名">
<el-input v-model="editstorageinfo.domain_name"></el-input> <el-input v-model="editstorageinfo.domain_name"/>
</el-form-item> </el-form-item>
<div v-if="editstorageinfo.storage_type === 2"> <div v-if="editstorageinfo.storage_type === 2">
<el-form-item label-width="110px" label="sts_role_arn"> <el-form-item label-width="110px" label="sts_role_arn">
<el-input <el-input
v-model="editstorageinfo.sts_role_arn"></el-input> v-model="editstorageinfo.sts_role_arn"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="endpoint"> <el-form-item label-width="110px" label="endpoint">
<el-input <el-input
v-model="editstorageinfo.endpoint"></el-input> v-model="editstorageinfo.endpoint"/>
</el-form-item> </el-form-item>
<el-form-item label-width="110px" label="下载授权方式"> <el-form-item label-width="110px" label="下载授权方式">
@ -281,7 +276,7 @@
style="width: 80%"> style="width: 80%">
<el-option v-for="st in editstorageinfo.download_auth_type_choices" :key="st.id" <el-option v-for="st in editstorageinfo.download_auth_type_choices" :key="st.id"
:label="st.name" :label="st.name"
:value="st.id"></el-option> :value="st.id"/>
</el-select> </el-select>
<el-form-item label-width="120px" style="margin-top: 10px;margin-left: 70px;width: 60%" <el-form-item label-width="120px" style="margin-top: 10px;margin-left: 70px;width: 60%"
@ -296,7 +291,7 @@
</div> </div>
<el-form-item label-width="110px" label="备注"> <el-form-item label-width="110px" label="备注">
<el-input v-model="editstorageinfo.description"></el-input> <el-input v-model="editstorageinfo.description"/>
</el-form-item> </el-form-item>
<el-button @click="updateorcreate">校验并保存</el-button> <el-button @click="updateorcreate">校验并保存</el-button>
@ -544,11 +539,11 @@
<style scoped> <style scoped>
.el-main { .el-main {
margin: 10px auto 100px; text-align: center;
width: 1166px; margin: 20px auto 100px;
width: 1266px;
position: relative; position: relative;
padding-bottom: 1px; padding-bottom: 1px;
background-color: #bfe7f9;
color: #9b9b9b; color: #9b9b9b;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border-radius: 1%; border-radius: 1%;

@ -13,6 +13,7 @@ import store from "@/store";
import { import {
Aside, Aside,
Avatar, Avatar,
Backtop,
Breadcrumb, Breadcrumb,
BreadcrumbItem, BreadcrumbItem,
Button, Button,
@ -46,6 +47,7 @@ import {
Pagination, Pagination,
Popover, Popover,
Progress, Progress,
Radio,
RadioButton, RadioButton,
RadioGroup, RadioGroup,
Row, Row,
@ -60,8 +62,7 @@ import {
Timeline, Timeline,
TimelineItem, TimelineItem,
Tooltip, Tooltip,
Upload, Upload
Radio,
} from "element-ui"; } from "element-ui";
import VueLazyload from 'vue-lazyload' import VueLazyload from 'vue-lazyload'
// 引入点击复制组件 // 引入点击复制组件
@ -144,6 +145,7 @@ Vue.use(Switch);
Vue.use(Footer); Vue.use(Footer);
Vue.use(InputNumber); Vue.use(InputNumber);
Vue.use(Radio); Vue.use(Radio);
Vue.use(Backtop);
Vue.prototype.$message = Message; Vue.prototype.$message = Message;
Vue.prototype.$notify = Notification; Vue.prototype.$notify = Notification;
Vue.prototype.$loading = Loading.service; Vue.prototype.$loading = Loading.service;

Loading…
Cancel
Save