parent
250c07c1a6
commit
4a8de02afa
@ -0,0 +1,252 @@ |
|||||||
|
<template> |
||||||
|
<transition :name="transitionName"> |
||||||
|
<div > |
||||||
|
<div style="margin: 5px 20px"> |
||||||
|
<el-steps :active="active" finish-status="success"> |
||||||
|
<el-step title="步骤 1"> |
||||||
|
|
||||||
|
</el-step> |
||||||
|
<el-step title="步骤 2"> |
||||||
|
</el-step> |
||||||
|
<el-step title="步骤 3"/> |
||||||
|
</el-steps> |
||||||
|
<div style="margin-top: 20px"> |
||||||
|
<div v-if="active===1"> |
||||||
|
<h2>你的二级域名</h2> |
||||||
|
<el-input clearable autofocus v-model="domain_name"/> |
||||||
|
</div> |
||||||
|
<div v-else-if="active===2"> |
||||||
|
<div style="text-align: center;margin: 20px 0"> |
||||||
|
<h3>还差一步绑定成功</h3> |
||||||
|
</div> |
||||||
|
请联系域名管理员,前往 <strong>{{ domain_name }}</strong> 域名 DNS 管理后台添加如下 CNAME 记录。 |
||||||
|
<el-table |
||||||
|
:data="domain_tData" |
||||||
|
border |
||||||
|
stripe |
||||||
|
style="width: 100%;margin-top: 20px"> |
||||||
|
<el-table-column |
||||||
|
prop="type" |
||||||
|
label="记录类型" |
||||||
|
align="center" |
||||||
|
width="100"> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column |
||||||
|
prop="host" |
||||||
|
align="center" |
||||||
|
label="主机记录" |
||||||
|
> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column |
||||||
|
prop="dns" |
||||||
|
align="center" |
||||||
|
label="记录值" |
||||||
|
width="300"> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
<el-alert title="请在域名DNS配置成功后,点击“下一步”按钮" |
||||||
|
style="margin-top: 30px" |
||||||
|
type="warning" |
||||||
|
:closable="false" |
||||||
|
show-icon/> |
||||||
|
</div> |
||||||
|
<div v-else-if="active===3"> |
||||||
|
<div v-if="!bind_status"> |
||||||
|
<div style="text-align: center;margin: 20px 0"> |
||||||
|
<el-link :underline="false" type="danger" |
||||||
|
style="font-size: x-large">绑定失败 |
||||||
|
</el-link> |
||||||
|
</div> |
||||||
|
|
||||||
|
<p style="margin: 10px 0">您的账户正在绑定域名:<strong>{{ domain_name }}</strong></p> |
||||||
|
<el-row> |
||||||
|
<el-col :span="16"><p>系统未检出到您的CNAME记录,请检查您的配置。</p></el-col> |
||||||
|
<el-col :span="6"> |
||||||
|
<el-button type="danger" size="small" plain style="margin-top: 8px" |
||||||
|
@click="remove_domain"> |
||||||
|
解除绑定 |
||||||
|
</el-button> |
||||||
|
</el-col> |
||||||
|
</el-row> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div v-else> |
||||||
|
<div style="text-align: center;margin: 20px 0"> |
||||||
|
<el-link :underline="false" type="success" |
||||||
|
style="font-size: x-large">绑定成功 |
||||||
|
</el-link> |
||||||
|
</div> |
||||||
|
|
||||||
|
<el-row> |
||||||
|
<el-col :span="16"><p>您的账户已绑定域名:<strong>{{ domain_name }}</strong></p></el-col> |
||||||
|
<el-col :span="6"> |
||||||
|
<el-button type="danger" size="small" plain style="margin-top: 8px" |
||||||
|
@click="remove_domain"> |
||||||
|
解除绑定 |
||||||
|
</el-button> |
||||||
|
</el-col> |
||||||
|
</el-row> |
||||||
|
|
||||||
|
</div> |
||||||
|
<el-table |
||||||
|
:data="domain_tData" |
||||||
|
border |
||||||
|
stripe |
||||||
|
style="width: 100%;margin-top: 20px"> |
||||||
|
<el-table-column |
||||||
|
prop="type" |
||||||
|
label="记录类型" |
||||||
|
align="center" |
||||||
|
width="100"> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column |
||||||
|
prop="host" |
||||||
|
align="center" |
||||||
|
label="主机记录" |
||||||
|
> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column |
||||||
|
prop="dns" |
||||||
|
align="center" |
||||||
|
label="记录值" |
||||||
|
width="300"> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
<div v-if="!bind_status" style="text-align: center;margin: 30px 0"> |
||||||
|
<el-button @click="check_cname" type="success" plain>已经修改配置,再次检查绑定</el-button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div v-if="active!==3" style="margin:40px 20px 0;text-align: right"> |
||||||
|
<el-button @click="last" |
||||||
|
:disabled="bind_status|| active===1 ">上一步</el-button> |
||||||
|
<el-button @click="next">下一步</el-button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</transition> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import {domainFun} from "@/restful"; |
||||||
|
export default { |
||||||
|
name: 'BindDomain', |
||||||
|
props: { |
||||||
|
transitionName: { |
||||||
|
type: String, |
||||||
|
default: 'bind-domian' |
||||||
|
}, |
||||||
|
app_id: { |
||||||
|
type: String, |
||||||
|
default: undefined |
||||||
|
}, |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
active: 1, |
||||||
|
bind_status: false, |
||||||
|
bind_domain_sure:true, |
||||||
|
domain_name:'', |
||||||
|
domain_tData: [{'type': 'CNAME', 'host': 'xxx', 'dns': 'demo.xxx.cn'}], |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
this.bind_click() |
||||||
|
}, |
||||||
|
beforeDestroy() { |
||||||
|
this.bind_domain_sure=false; |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
check_cname() { |
||||||
|
domainFun(data => { |
||||||
|
if (data.code === 1000) { |
||||||
|
if (this.active++ > 2) this.active = 3; |
||||||
|
this.bind_status = true; |
||||||
|
this.$store.dispatch("dodomainshow", false); |
||||||
|
} else { |
||||||
|
if (data.code === 1004) { |
||||||
|
this.active = 1; |
||||||
|
this.domain_name = ''; |
||||||
|
} else { |
||||||
|
if (this.active++ > 2) this.active = 3; |
||||||
|
} |
||||||
|
this.bind_status = false; |
||||||
|
this.$message.error("绑定失败 " + data.msg) |
||||||
|
} |
||||||
|
}, {methods: 'PUT', data: {app_id:this.app_id}}) |
||||||
|
}, |
||||||
|
remove_domain() { |
||||||
|
domainFun(data => { |
||||||
|
if (data.code === 1000) { |
||||||
|
this.bind_status = false; |
||||||
|
this.active = 1; |
||||||
|
this.$message.success("解除绑定成功 "); |
||||||
|
this.$store.dispatch("dodomainshow", true); |
||||||
|
} else { |
||||||
|
this.$message.error("解除绑定失败 " + data.msg) |
||||||
|
} |
||||||
|
}, {methods: 'DELETE', data: {app_id:this.app_id}}); |
||||||
|
}, |
||||||
|
bind_click() { |
||||||
|
domainFun(data => { |
||||||
|
if (data.code === 1000) { |
||||||
|
if (data.data) { |
||||||
|
if (data.data.domain_name) { |
||||||
|
this.domain_name = data.data.domain_name; |
||||||
|
} |
||||||
|
if (data.data.domain_record) { |
||||||
|
this.format_domain_tData(data.data.domain_record); |
||||||
|
if (this.active++ > 2) this.active = 3; |
||||||
|
} |
||||||
|
if (data.data.is_enable) { |
||||||
|
this.bind_status = true; |
||||||
|
if (this.active++ > 2) this.active = 3; |
||||||
|
} |
||||||
|
this.bind_domain_sure = true; |
||||||
|
} |
||||||
|
} else { |
||||||
|
this.$message.error("绑定失败 " + data.msg) |
||||||
|
} |
||||||
|
}, {methods: 'GET', data: {app_id:this.app_id}}); |
||||||
|
}, |
||||||
|
format_domain_tData(cname_domain) { |
||||||
|
let domain_name_list = this.domain_name.split('.'); |
||||||
|
const d_len = domain_name_list.length; |
||||||
|
if (d_len === 2) { |
||||||
|
this.domain_tData[0].host = '@' |
||||||
|
} else if (d_len > 2) { |
||||||
|
domain_name_list.splice(domain_name_list.length - 2, 2); |
||||||
|
this.domain_tData[0].host = domain_name_list.join(".") |
||||||
|
} |
||||||
|
this.domain_tData[0].dns = cname_domain; |
||||||
|
}, |
||||||
|
next() { |
||||||
|
if (this.active === 1) { |
||||||
|
domainFun(data => { |
||||||
|
if (data.code === 1000) { |
||||||
|
if (data.data && data.data.cname_domain) { |
||||||
|
this.format_domain_tData(data.data.cname_domain); |
||||||
|
if (this.active++ > 2) this.active = 3; |
||||||
|
} |
||||||
|
} else { |
||||||
|
this.$message.error("绑定失败 " + data.msg) |
||||||
|
} |
||||||
|
}, {methods: 'POST', data: {domain_name: this.domain_name,app_id:this.app_id}}) |
||||||
|
} else if (this.active === 2) { |
||||||
|
this.check_cname() |
||||||
|
} |
||||||
|
}, |
||||||
|
last() { |
||||||
|
if (this.active-- < 2) this.active = 1; |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped> |
||||||
|
.dialog-footer{ |
||||||
|
|
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,19 @@ |
|||||||
|
# Generated by Django 3.0.3 on 2021-05-19 18:15 |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
dependencies = [ |
||||||
|
('api', '0049_remove_userinfo_domain_name'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='userdomaininfo', |
||||||
|
name='app_id', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Apps', |
||||||
|
verbose_name='APP专属域名'), |
||||||
|
), |
||||||
|
] |
Loading…
Reference in new issue